插入、删除和更新

来源:互联网 发布:一冠淘宝店铺转让 编辑:程序博客网 时间:2024/06/01 09:30

插入

db.foo.insert({"bar": "baz"})

插入校验

理解:
* 数据能够解析成BSON形式
* 拥有_id字段
* 文档不能超过4MB

批量插入

理解:批量插入能传递一个由文档组成的数组给数据库

删除

db.users.remove({})

理解:
* 接受一个查询文档,所有能够被该查询出的文档都会被删除
* remove不会删除索引

删除速度

理解:如果想要删除集合中的所有文档和索引,应该直接删除集合,这样速度更快

更新

理解:
* 第一个参数负责找到需要修改的文档,
* 第二个参数负责修改的文档
* 第三个参数没有找到文档时,是否创建一个文档
* 第四个参数指定是否全部修改
* 原子性,两个更新同时发生,先到达数据库的先执行

操作方式

理解:
* 替换,用一个完成的文档,替换掉原先的文档
* 部分修改;update({}, {})

  • 修改一个键的值,如果不存在就创建;$set;P28
  • 删除一个键;$unset;P29
  • 增加或者减少一个数的值,如果不存在就创建;$inc;P30
  • 数组修改;P31
    • 数组末尾添加数据,如果不存在就创建;$push
    • 数组末尾添加数据,如果不存在就创建,但如果已经存在,则不重复添加;$addToSet
    • 批量添加数据,与push和addToSet配合使用;$each
    • 从尾部或头部删除一个数据;$pop
    • 删除数组中的指定数据,相同的数据也会删除;$pull
    • 修改指定位置数据;P34
  • 没有找到需要修改的文档,就创建一个新的文档;P36;update({}, {}, true)
  • 更新多个文档;P38;update({}, {}, true, true)
  • shell中快速修改文档;save;P37
  • 当更新或删除操作的查询用到排序时,为了避免同时错误,应该是findAndModify合并操作;P38

修改速度 P35

理解:
* 如果操作不影响文档大小,速度会很快
* 大小发生改变时,需要分配空间,因此速度会变慢
* 当数组需要频繁添加数据时,可以考虑将内嵌数组

替换

查阅:

db.nums.update({num: 1}, {num: 111})

注意:

{"_id": 1, "name": "joe", "age": 20}{"_id": 2, "name": "joe", "age": 30}// 执行下面的操作, 本想修改第二个文档,但是却修改了第一个文档db.people.update({"name": "joe"}, {"_id": 2, "name": "joe", "age": 31})

注:页面代表,在MongoDB权威指南第一版中的页数

0 0