文档的数据结构和json基本一样。
所有存储在集合中的数据都是bson格式。
bson是一种类json的一种二进制形式的存储格式,简称binary json。
要将数据插入到 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() 命令中传递文档数组。
1 > db.test.insert([ 2 ... {name:"uzi", 3 ... like:["mongodb","java","database"], 4 ... }, 5 ... {name:"957", 6 ... parents:[{ 7 ... father:"letme", 8 ... mather:"mlxg"}],}])
要插入文档,也可以使用 db.collection_name.save() 方法。与 insert() 方法不同的是,当输入的id值相同时, insert() 方法无法插入,但 save() 方法会更新包含 该 id 值的文档的全部数据。
db.collection_name.insertone() 方法将单个文档插入到集合中。如果没有指定 _id ,mongodb会自动将添加。
该方法会返回包含新插入的文档的 ”_id"字段值的文档。
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 |
对整数值执行按位与和或运算。 |
collection 对象的 update() 方法可以更新集合中的文档。
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeconcern: <document> } )
参数说明:
注意:如果不使用运算符,则update内容不会进行局部修改,而是全局修改。
示例:
1 #将name为uzi的学生的age加5 2 db.student.update({name:"uzi"},{$inc:{age:5}}) 3 4 #把uzi的sex改为boy 5 db.student.update({name:"uzi"},{$set:{sex:"boy"}}) 6 7 #把uzi的like字段删除 8 db.student.update({name:"uzi"},{$unset:{like:1}}) 9 10 #给uzi的添加别名dog 11 db.student.update({name:"uzi"},{$push:{aname:"dog"}}) 12 13 #给uzi添加多个别名 14 db.student.update({name:"uzi"},{$pushall:{aname:["a1","a2"]}}) 15 16 #给uzi的别名数组里再添加一个数组 17 db.student.update({name:"uzi‘},{$addtoset:{aname:["a3","a4"]}}) 18 19 #删除别名数组内第一个别名 20 db.student.update({name:"uzi"},{$pop:{aname:-1}}) 21 22 #删除别名 a2 23 db.student.update({name:"uzi"},{$pull:{aname:"a2"}})
save() 方法通过传入的文档来替换已有文档。语法格式如下:
db.collection.save( <document>, { writeconcern: <document> } )
无需指定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> } )
示例:
注意:如果要删除集合中的全部文档,可以使用
db.collection_name.remove({})
如对本文有疑问, 点击进行留言回复!!
MongoDB中数据的替换方法实现类Replace()函数功能详解
理解Redis持久化,RDB持久化和AOF持久化的不同处理方式
网友评论