Mongo中的数据类型

一、null

  null用于表示空值或者不存在的字段

  {"X" : null}

二、布尔型

  布尔类型有两个值true和false

  {"x" : true}

三、数值

  {"x" : 3.14}

  {"x" : 3}

四、字符串

  {"x" : "qiaoansheng"}

五、日期类型

  {"x" : new Date()}

六、正则表达式

  {"x" : /foobar/i}

七、数组

  ("x" : ["a", "b", "c", "d"])

八、内嵌文档

  {"x" : {"qiao" : "ansheng"}}

九、对象id

  {"x" : ObjectId()}

十、二进制数据

十一、代码

  {"x" : function() { /* ... */ }}

 

日期:

  在shell中创建日期对象的时候使用的是new Date() 返回的是一个日期类型的字符串 (2016/4/7 2:03:42)

数组:

  数组是一组值,它既能作为有序对象(入列表、栈或队列),也能作为无序对象(入:数据集)来操作

  {"qiao" : ["an",  "sheng",  3,  4.12]}

  上面 "qiao" 的文档中, qiao 这个键的值是一个数组

  数组中可以包含不同数据类型的元素

内嵌文档

{

  "OldId" : 934326,
  "Catalogs" : [{
    "CatalogId" : "5591f46e049fbb3c241a2526",
    "ParentId" : "",
    "CatalogName" : "语法",
    "Depth" : 0
  }, {
    "CatalogId" : "561746121daa7e28881ed7ff",
    "ParentId" : "5591f46e049fbb3c241a2526",
    "CatalogName" : "句型",
    "Depth" : 1
  }],
  "Points" : []

}

  内嵌文档,中可以这样存放数据,在关系数据库中,我们可以通过关系关联多张表来获取数据(比如说数据库中有两张表他们之间的关系是一对多的,那我就要通过这个一来获取这个多的数据,把它们放到一个list集合中)

     但是在mongo中,因为他是非关系型数据库,所以我们无法进行表关联

  所以我们就使用内嵌文档的方式,把 多的这个数据存入到一的某一个键内

  这样我们从mongo中读取这个数据的时候,会自动给我们反序列化,这个Model  其中Catalogs 这个变量对应的是一个List的一个集合,集合中的数据就是数据库中Catalogs 的值

  mongoNB的一点是,他还能在内嵌文档中,在嵌入文档,程序获取数据的时候,也能给反序列化出来,集合中嵌套集合

  但是有一点,mongo目前只能修改到第二级的集合,也就是最多只能修改Catalogs 下面的数据

  如果Catalogs 下面的数据中嵌套的还有集合,就不能直接更新了,只能把 Catalogs 重新构建这个数据,更新到数据库中

_id和ObjectId

  ObjectId使用12字节的存储空间,是一个有24个十六进制数字组成的字符串,他是mongo的默认主键

posted @ 2016-04-07 10:37  乔安生  阅读(721)  评论(0编辑  收藏  举报