文档概念

  文档的数据结构和JSON基本一样。

  所有存储在集合中的数据都是BSON格式。

  BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

插入文档

insert()方法

  要将数据插入到 MongoDB 集合中,可以使用 insert() 方法。

db.collection_name.insert(document)

  

  其中test为集合名。如果数据库中不存在集合,则MongoDB将创建此集合,并将文档插入到该集合中。

  在插入的文档中,如果不指定 _id 参数,MongoDB会为此文档分配一个唯一的Object_id。

  _id 为集合中的每一个文档的12个字节的十六进制数。12 字节划分为:

id: ObjectId( 4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)

  要在单个语句中插入多个文档,可以在 insert() 命令中传递文档数组。

 > db.test.insert([
... {name:"uzi",
... like:["MongoDB","JAVA","Database"],
... },
... {name:"957",
... parents:[{
... father:"letme",
... mather:"mlxg"}],}])

添加代码

save()方法

  要插入文档,也可以使用 db.collection_name.save() 方法。与 insert() 方法不同的是,当输入的id值相同时, insert() 方法无法插入,但 save() 方法会更新包含 该 id 值的文档的全部数据。

insertOne()方法

  db.collection_name.insertOne() 方法将单个文档插入到集合中。如果没有指定 _id ,MongoDB会自动将添加。

  该方法会返回包含新插入的文档的 ”_id"字段值的文档。

insertMany()方法

  db.collection_name.insertMany() 方法可以将多个文档插入到集合中。如果没有指定 _id,则自动添加ObjectId

更新文档

更新运算符

  在MongoDB中进行更新操作时,可以使用运算符进行文档数据的局部修改。

运算符 描述 语法
$set 更新字段的值,如果字段不存在则进行添加 { $set : { field : value } }
$inc 

将字段值增加指定的量

{ $inc : { field : value } }

$rename

重命名字段名(键名)

{ $rename : { field : value } }

$unset

删除指定的字段(键)

 { $unset : { field : "1" } }
$setOnInsert

在更新操作中新建文档时设置字段的值

{ $setOnInsert : { field : value } }
$addToSet

在已有数组中添加元素,如果元素存在则不操作

{ $addToSet : { field : value } }
$pop

删除数组的第一个或最后一个元素。如果值为“-1",则删除第一个元素;

如果值为”1",则删除最后一个元素。

{ $pop : { field : value } }
$push

1.如果指定的键是数组则追加新的值;

2.如果指定的键不是数组则无法成功执行

3.如果不存在指定的字段(键)则创建数组类型的键值对

{ $push : { field : value } }
$pushAll

用法与 $push 类似,一次可以添加多个值到数组

{ $pushAll : { field : [ value1,value2,...] } }
$pull

从数组中删除指定值

{ $pull : { field : value } }
$pullAll

从数组中删除多个值,要删除的值是以数组指定的

{ $pullAll : { field : [ value1,value2,...] } }
$each

用于运算符$push和$addToSet 的限定符,用于在数组中添加多个单独的元素,防止直接添加进数组元素

 field : { $each : [ value1,...] }
$slice

用于运算符 $push 的限定符,用于限制更新后的数组长度

field : { $slice : < num > }
$sort

用于运算符 $push 的限定符,用于将数组中的文档重新排序

 
$bit

对整数值执行按位与和或运算。

 

更新方法 update()

  Collection 对象的 update() 方法可以更新集合中的文档。

    db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)

  参数说明:

  •   query:查询条件,类似sql update查询内where后面的条件。
  •   update:要更新的内容和一些更新的操作符(如 $set...)等,类似sql update查询内set后面的参数。
  •   upsert:可选。参数upsert是个布尔值,如果为 true 且没有文档与查询匹配,则插入一个新文档;如果为 false 则不插入。 默认为 false。
  •   multi:可选。mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来的多条记录全部更新。
  •   writeConcern:可选。抛出异常的级别。

  注意:如果不使用运算符,则update内容不会进行局部修改,而是全局修改。

  示例:

    

 #将name为uzi的学生的age加5
db.student.update({name:"uzi"},{$inc:{age:5}}) #把uzi的sex改为boy
db.student.update({name:"uzi"},{$set:{sex:"boy"}}) #把uzi的like字段删除
db.student.update({name:"uzi"},{$unset:{like:1}}) #给uzi的添加别名dog
db.student.update({name:"uzi"},{$push:{aname:"dog"}}) #给uzi添加多个别名
db.student.update({name:"uzi"},{$pushAll:{aname:["A1","A2"]}}) #给uzi的别名数组里再添加一个数组
db.student.update({name:"uzi‘},{$addToSet:{aname:["A3","A4"]}}) #删除别名数组内第一个别名
db.student.update({name:"uzi"},{$pop:{aname:-1}}) #删除别名 A2
db.student.update({name:"uzi"},{$pull:{aname:"A2"}})

局部更新语句示例

save() 方法

  save() 方法通过传入的文档来替换已有文档。语法格式如下:

    db.collection.save(
<document>,
{
writeConcern: <document>
}
)
  •   document:文档数据
  •   writeConcern:可选。抛出的异常级别。

  无需指定query和update对象,直接将新文档替换掉原来的旧文档。它通过文档中的_id字段确定要修改的字段。

  如果集合中没有与传入文档的_id字段值相等的文档,则会添加新的文档。

  save() 函数的执行效率要低于update()。

查看文档

  查看集合中的文档,可以使用find()方法。

  db.collection_name.find() 可以以非结构化的方式显示集合中的所有文档。

  db.collection_name.find().pretty() 可以以结构化的方式显示集合中的所有文档。

删除文档

  remove()函数可以用来删除集合中的文档。

    db.collection_name.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
  •   query:可选。删除的文档的条件。
  •   justOne:可选。如果为true 或 1,则只删除一个文档。默认为false。
  •   writeConcern:可选。抛出异常的级别。

  示例:

  注意:如果要删除集合中的全部文档,可以使用

db.collection_name.remove({})

MongoDB学习(操作集合中的文档)的更多相关文章

  1. Mongoose在向集合中插入文档时的集合命名问题

    Mongoose使用结构化的模式应用到MongoDB集合,为MongoDB Node.js原生驱动程序提供了更多的功能和简化了数据库操作. 从创建连接到向数据库中写入一个条数据经历了以下步骤: 1.连 ...

  2. MongoDB学习笔记三—增删改文档上

    插入insert 单条插入 > db.foo.insert({"bar":"baz"}) WriteResult({ }) 批量插入 > db.fo ...

  3. MongoDB学习笔记四—增删改文档下

    $slice 如果希望数组的最大长度是固定的,那么可以将 $slice 和 $push 组合在一起使用,就可以保证数组不会超出设定好的最大长度.$slice 的值必须是负整数. 假设$slice的值为 ...

  4. Mongodb(2)创建数据库,删除数据库,创建集合,删除集合,显示文档内容

    显示所有数据库列表:show dbs > show dbs local .078GB runoob .078GB > 显示当前数据库:db > db runoob > 显示所有 ...

  5. MongoDB学习笔记——集合管理

    创建集合 使用db.createCollection(name, options) 方法创建集合 name 所创建的集合名称必选! options 可选.指定有关内存大小及索引的选项 db.creat ...

  6. MongoDB常用操作--集合2

    1.查询集合中的文档,可以使用命令 db.集合名称.find({条件}),或者使用 db.集合名称.findOne() 查询第一个文档 2.查询集合中的文档,返回某些特定的键值 3.查询集合中的文档 ...

  7. 2.MongoDB系列之创建更新删除文档

    1. 插入文档 // 单条插入 db.getCollection('blog').insertOne({'type': 'mongodb'}) // 批量 插入 db.getCollection('b ...

  8. MongoDB常用操作--集合1

    1.创建集合有两种方式,显示创建和隐式创建 显示创建可以使用命令 db.createCollection("集合名称") 隐式创建可以使用命令 db.集合名称.insert({}) ...

  9. MongoDB常用操作--集合3

    1.更新集合中的文档,语法如下: db.collection.update(criteria,objNew,upsert,multi) 参数说明: criteria:用于设置查询条件的对象 objNe ...

随机推荐

  1. Vue 进阶之路(七)

    之前的文章我们对 vue 的列表输出做了介绍,本章我们来看一下 vue 的组件 component. <!DOCTYPE html> <html lang="en" ...

  2. asp.net core系列 55 IS4结合Identity密码保护API

    一.概述 OAuth 2.资源所有者密码授权允许客户端(Client项目)向令牌服务(IdentityServer项目)发送用户名和密码,并获取代表该用户的访问令牌.本篇将IS4结合asp.net c ...

  3. Python中的那些“坑”

    1.哪个是True,哪个是False? 这里要看三组代码: # 第一组: >>>a=256 >>>b = 256 >>>a is b # 第二组: ...

  4. 对.NET Core未来发展趋势的浅层判断

    经常听到园里.NET开发人员在抱怨生态不如JAVA,想要转JAVA,所谓打不过你,我就加入你!杜兰特的思维方式固然是获取总冠军的一种方式,但是我们要关起门来问自己有没有杜兰特的实力. 用开发生态来类比 ...

  5. JenKins使用pm2部署.net core网站

    登录事先准备好的 Jenkins 1 新建任务 2 源码管理 git 输入正确地址 3 构建环境:Delete workspace before build startsAbort the build ...

  6. vue项目中vux的使用

    vux VUX 是基于 WeUI 和 Vue.js 的 移动端 UI 组件库,提供丰富的组件满足移动端(微信)页面常用业务需求. 在vue-cli中使用步骤如下: 1.安装: npm i vux -S ...

  7. 19,CSS 滤镜

    1.Filter 属性介绍 2.Alpha 滤镜的使用 3.Blur 滤镜的使用 4.Filph.Filpv 滤镜 5.DropShadow 滤镜 6.Glow 滤镜 7.Gray ,Invert,X ...

  8. June 30th. 2018, Week 26th. Saturday

    Curiosity is the wick in the candle of learning. 如果学习是一根蜡烛,那好奇心就是烛芯. From William Arthur Ward. Pleas ...

  9. winform 实现类似于TrackBar的自定义滑动条,功能更全

    功能很全,随便列几个 1.可以设置滑块的大小,边框颜色.背景色.形状等等吧 2.可以设置轨道的方向.边框颜色.背景色.阴影等等 ... 效果图: 下载链接https://download.csdn.n ...

  10. odoo action方法

    二.动作按钮里面也可以由字段判断: def action_select_sale_order_line(self,cr,uid,ids,date_begin,date_end,context=None ...