首先说一下MongoDB是什么?

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB 是一个基于分布式文件存储的数据库。

NoSQL (not only sql)是对不同传统的关系型数据库的数据库管理系统的统称。不需要遵循关系型数据库的ACID规则,

用于超大规模数据的存储,这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

************************************************************************************

关系型和非关系型的对比:

RDBMS
-
高度组织化结构化数据
- 结构化查询语言(SQL) (SQL)
-
数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言

- 严格的一致性
- 基础事务

NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
-键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性

NoSQL强调 Key-Value   Stores  和  文档数据库  的优点,而不是单纯的反对RDBMS。

NoSQL的优点/缺点

优点:

  • - 高可扩展性
  • - 分布式计算
  • - 低成本
  • - 架构的灵活性,半结构化数据
  • - 没有复杂的关系

缺点:

  • - 没有标准化
  • - 有限的查询功能(到目前为止)
  • - 最终一致是不直观的程序

*****************************************************************************

MongoDB是文档存储类型的,文档存储一般用类似json的格式存储,数据结构由键值(key=>value)对组成,存储的内容是文档型的。

这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。

******************************************************************************

MongoDB的安装配置:

这个自己百度,教程很多,https://jingyan.baidu.com/article/e52e36156372ce40c60c5194.html

http://www.runoob.com/mongodb/mongodb-window-install.html

安装好测试成功之后,安装可视化工具 Robomongo.

反正我当时在安装配置和连接的时候碰到好多坑,当时也没记录,总之都是百度可以解决的问题。

*******************************************************************************

RDBMS 与 MongoDB 对应的术语:

  1. 文档中的键/值对是有序的。
  2. 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
  3. MongoDB区分类型和大小写。
  4. MongoDB的文档不能有重复的键
  5. 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。

**************************************************************************

了解了上述基本概念后,最重要还是CRUD操作。

show dbs:显示数据库列表

show  collections:显示当前数据库中的集合(类似关系数据库中的表)

use   db name:切换当前数据库  -  将local切换为admin

db.dropDatabase(); 删除当前数据库

db.getMongo();  查看当前db的链接机器地址

显式地创建一个新的集合:

db.createCollection(<name>, { capped: <boolean>,
autoIndexId: <boolean>,
size: <number>,
max: <number>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document> } )

这个命令创建名字为“user”,最大存储空间为 5m,最多 5000 个文档的集合.

添加数据:没有固定的列,根据添加的数据为准。

修改数据 :相当于 update user set name='王五'  where  age = 33;

删除数据:

查询数据:

1: select  *  from user;

2: select distict name from user;  过滤掉name中的相同数据。

根据列过滤数据 。

3: select * from user where age = 15;

4:  select * from user where age >15;

5:  select * from user where age <22;

6:select * from user where age >= 25;

7: select * from user where age <= 25;

8:

9:   select  *  from user where name like '%呵%';  模糊查询

10:  select name, age from user;

当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。

11:select name, age from user where age >25;   查询指定列的数据。

12:按照年龄升序排列

  降序排

13:select * from user where name = '呵呵' and age = '85'

14:select  top  2  *  from user;  查询前两条数据

15:查询2条以后的数据

16:查询在 2-4 之间的数据。可用于分页,limit是pageSize,skip是第几页*pageSize

17:select * from user where age = 15 or age = 85;

18:查询第一条数据

19:查询某个结果集的记录条数   select count(*) from user where age >= 15;

平时我用到的查询语句就是这么多了,更多的语句参考 https://www.cnblogs.com/garinzhang/p/mongoDB_basic_usage.html

android开发学习 ------- MongoDB数据库简单理解的更多相关文章

  1. Android开发学习——SQLite数据库与单元测试

    SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHelper  public class Myopenhelper extends SQLiteOpenHelp ...

  2. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  3. Android开发学习之路--Android Studio cmake编译ffmpeg

      最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...

  4. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  5. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  6. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

  7. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

  8. Android开发学习之路--网络编程之xml、json

    一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...

  9. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

随机推荐

  1. 设置label的字体

    label.font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:24]; 字体名如下: Font Family: Amer ...

  2. 如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码)

    前言 本次编写所用的库为于仕祺老师免费提供的人脸检测库.真心好用,识别率和识别速度完全不是Opencv自带的程序能够比拟的.将其配合Opencv的EigenFace算法,基本上可以形成一个小型的毕业设 ...

  3. spring配置mongodb连接副本集多个节点

    mongodb版本3.4.x 1.配置副本集 先配置副本集,可参考我之前写的文章:http://blog.csdn.net/fuck487/article/details/78287362 注意:必须 ...

  4. Github--开源代码仓库式系统(转)

    要了解Github,我们首先要知道Git,Git是管理代码的工具,写代码不是件轻松的事儿,一个人写的时候已经不轻松了,一群人写就更不轻松了,但这世界上很多事都是怎么不轻松怎么来的,大部分人都会和别人一 ...

  5. codeforces round 421 div2 补题 CF 820 A-E

    A Mister B and Book Reading  O(n)暴力即可 #include<bits/stdc++.h> using namespace std; typedef lon ...

  6. CCRect 构造函数的几个参数解释

    转自: http://blog.163.com/hzklclick_wy/blog/static/21550517520137139511839/     void CCRect::setRect(f ...

  7. laravel5.2 增加Caffienate Modules,实现模块化开发

    1.模块化开发可以把框架分成 Topc前台模块,Topm手机端前台,Admin后台管理模块,每个模块中都有自己的一套Controller,Logic,router等. 2.咖啡因模块是一个简单的包,以 ...

  8. web安全之跨站请求伪造

    CSRF(Cross-site request forgery),中文名称:跨站请求伪造.因为这个不是用户真正想发出的请求,这就是所谓的请求伪造;因为这些请求也是可以从第三方网站提交的,所以前缀跨站二 ...

  9. input type=password 浏览器会自动填充密码的问题

    解决办法是在form上或input上添加autoComplete="off"这个属性. form表单的属性如下所示: 但是这个解决方案在谷歌和火狐上均有bug,下面来一个一个解决. ...

  10. 【旧文章搬运】Windows句柄表分配算法分析(实验部分)

    原文发表于百度空间,2009-03-31========================================================================== 理论结合实 ...