mongodb文档管理(查询 插入 更新文档 删除)
查询
插入
更新文档
删除
注意
集合不存在时创建集合,然后再插入记录
_id字段值已存在时,修改文档字段值
_id字段值不存在时,插入文档
Save与insert区别
> db.c2.save({name:"bob",age:19})
WriteResult({ "nInserted" : 1 })
> db.c2.find()
{ "_id" : ObjectId("5b42d6c270fa73faab18ef23"), "name" : "bob", "age" : 19 }
> db.c2.save({_id:7,name:"bob2",age:19})
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 7 })
> db.c2.find()
{ "_id" : ObjectId("5b42d6c270fa73faab18ef23"), "name" : "bob", "age" : 19 }
{ "_id" : 7, "name" : "bob2", "age" : 19 }
> db.c2.save({_id:7,name:"tom"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.c2.find()
{ "_id" : ObjectId("5b42d6c270fa73faab18ef23"), "name" : "bob", "age" : 19 }
{ "_id" : 7, "name" : "tom" }
> db.c2.insert({_id:7,name:"tom"})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: studb.c2 index: _id_ dup key: { : 7.0 }"
}
})
> db.c2.find()
{ "_id" : ObjectId("5b42d6c270fa73faab18ef23"), "name" : "bob", "age" : 19 }
{ "_id" : 7, "name" : "tom" }
> db.c2.insert({_id:17,name:"tom"})
WriteResult({ "nInserted" : 1 })
> db.c2.insert({_id:17,name:"tom"}{_id:23,name:"lucy"})
2018-07-09T11:35:38.661+0800 E QUERY [thread1] SyntaxError: missing ) after argument list @(shell):1:32
> db.c2.save({_id:17,name:"tom"}{_id:23,name:"lucy"})
2018-07-09T11:35:47.109+0800 E QUERY [thread1] SyntaxError: missing ) after argument list @(shell):1:30
>
> db.c6.insertMany(
... [
... {name:"zs",age:19,pay:25800},
... {name:"ls",school:"test"},
... ]
... )
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5b42da3770fa73faab18ef24"),
ObjectId("5b42da3770fa73faab18ef25")
]
}
> db.c6.find()
{ "_id" : ObjectId("5b42da3770fa73faab18ef24"), "name" : "zs", "age" : 19, "pay" : 25800 }
{ "_id" : ObjectId("5b42da3770fa73faab18ef25"), "name" : "ls", "school" : "test" }
>
查询语法
> db.c3.findOne()
{
"_id" : ObjectId("5b409025a0ae889363f8f26a"),
"name" : "yaya",
"password" : "x",
"uid" : 8888,
"gid" : 999,
"comment" : "teacher",
"homedir" : "/home/yaya",
"shell" : "/bin/bash"
}
条件uid=1
> db.c3.find({uid:1})
{ "_id" : ObjectId("5b409025a0ae889363f8f26c"), "name" : "bin", "password" : "x", "uid" : 1, "gid" : 1, "comment" : "bin", "homedir" : "/bin", "shell" : "/sbin/nologin" }
>
条件+ 1显示 0不显示
> db.c3.find({uid:1})
{ "_id" : ObjectId("5b409025a0ae889363f8f26c"), "name" : "bin", "password" : "x", "uid" : 1, "gid" : 1, "comment" : "bin", "homedir" : "/bin", "shell" : "/sbin/nologin" }
> db.c3.find({uid:1},{name:1})
{ "_id" : ObjectId("5b409025a0ae889363f8f26c"), "name" : "bin" }
> db.c3.find({uid:1},{_id:0,name:1,uid:1})
{ "name" : "bin", "uid" : 1 }
>
> db.c3.find({uid:1},{_id:0,shell:0}) //uid=1 不显示_id,shell
{ "name" : "bin", "password" : "x", "uid" : 1, "gid" : 1, "comment" : "bin", "homedir" : "/bin" }
>
> db.c3.find().limit(3)
{ "_id" : ObjectId("5b409025a0ae889363f8f26a"), "name" : "yaya", "password" : "x", "uid" : 8888, "gid" : 999, "comment" : "teacher", "homedir" : "/home/yaya", "shell" : "/bin/bash" }
{ "_id" : ObjectId("5b409025a0ae889363f8f26b"), "name" : "root", "password" : "x", "uid" : 0, "gid" : 0, "comment" : "root", "homedir" : "/root", "shell" : "/bin/bash" }
{ "_id" : ObjectId("5b409025a0ae889363f8f26c"), "name" : "bin", "password" : "x", "uid" : 1, "gid" : 1, "comment" : "bin", "homedir" : "/bin", "shell" : "/sbin/nologin" }
>
> db.c6.find()
{ "_id" : ObjectId("5b42da3770fa73faab18ef24"), "name" : "zs", "age" : 19, "pay" : 25800 }
{ "_id" : ObjectId("5b42da3770fa73faab18ef25"), "name" : "ls", "school" : "test" }
> db.c1.find().skip(1)
{ "_id" : "ObjectId(5b403a4ad701a74e97d84580)", "name" : "bob" }
>
sort(字段名)
>db.c3.find({},{_id:0,name:1,uid:1}).sort({uid:1}) //{} 查询所有
{"name" : "root", "uid" : 0 }
{"name" : "bin", "uid" : 1 }
{"name" : "daemon", "uid" : 2 }
{"name" : "adm", "uid" : 3 }
{"name" : "lp", "uid" : 4 }
{"name" : "sync", "uid" : 5 }
{"name" : "shutdown", "uid" : 6 }
{"name" : "halt", "uid" : 7 }
{"name" : "mail", "uid" : 8 }
{"name" : "operator", "uid" : 11 }
{"name" : "games", "uid" : 12 }
{"name" : "ftp", "uid" : 14 }
{"name" : "mysql", "uid" : 27 }
{"name" : "rpcuser", "uid" : 29 }
{"name" : "rpc", "uid" : 32 }
{"name" : "ntp", "uid" : 38 }
{"name" : "gdm", "uid" : 42 }
{"name" : "apache", "uid" : 48 }
{"name" : "tss", "uid" : 59 }
{"name" : "avahi", "uid" : 70 }
Type"it" for more
>db.c3.find({},{_id:0,name:1,uid:1}).sort({uid:-1})
{"name" : "nfsnobody", "uid" : 65534 }
{"name" : "yaya", "uid" : 8888 }
{"name" : "nginx", "uid" : 1001 }
{"name" : "lisi", "uid" : 1000 }
{"name" : "polkitd", "uid" : 999 }
{"name" : "libstoragemgmt", "uid" : 998}
{"name" : "colord", "uid" : 997 }
{"name" : "saslauth", "uid" : 996 }
{"name" : "chrony", "uid" : 995 }
{"name" : "geoclue", "uid" : 994 }
{"name" : "setroubleshoot", "uid" : 993}
{"name" : "gnome-initial-setup", "uid" :992 }
{"name" : "systemd-network", "uid" : 192}
{"name" : "abrt", "uid" : 173 }
{"name" : "rtkit", "uid" : 172 }
{"name" : "pulse", "uid" : 171 }
{"name" : "usbmuxd", "uid" : 113 }
{"name" : "qemu", "uid" : 107 }
{"name" : "nobody", "uid" : 99 }
{"name" : "postfix", "uid" : 89 }
Type"it" for more
>
匹配条件
条件表示方式
>db.c3.find({name:"root"},{_id:0,name:1}) //匹配name为root
{"name" : "root" }
>
>db.c3.find({name:"root",uid:0},{_id:0,name:1,uid:1}) //多个条件同时成立
{"name" : "root", "uid" : 0 }
>
范围内比较
$in
$nin
$or
>db.c3.find({uid:{$in:[1,6,9]}})
{"_id" : ObjectId("5b409025a0ae889363f8f26c"),"name" : "bin", "password" : "x","uid" : 1, "gid" : 1, "comment" :"bin", "homedir" : "/bin", "shell": "/sbin/nologin" }
{"_id" : ObjectId("5b409025a0ae889363f8f271"),"name" : "shutdown", "password" : "x","uid" : 6, "gid" : 0, "comment" :"shutdown", "homedir" : "/sbin","shell" : "/sbin/shutdown" }
>
>db.c3.find({uid:{$in:[1,6,9]}},{_id:0,uid:1})
{"uid" : 1 }
{"uid" : 6 }
>
>db.c3.find({name:{$in:["root","daemon","bin"]}})
{"_id" : ObjectId("5b409025a0ae889363f8f26b"),"name" : "root", "password" : "x","uid" : 0, "gid" : 0, "comment" :"root", "homedir" : "/root", "shell": "/bin/bash" }
{"_id" : ObjectId("5b409025a0ae889363f8f26c"),"name" : "bin", "password" : "x","uid" : 1, "gid" : 1, "comment" :"bin", "homedir" : "/bin", "shell": "/sbin/nologin" }
{"_id" : ObjectId("5b409025a0ae889363f8f26d"),"name" : "daemon", "password" : "x","uid" : 2, "gid" : 2, "comment" :"daemon", "homedir" : "/sbin", "shell": "/sbin/nologin" }
>
//匹配的条件:{name:{$in:["root","daemon","bin"]}}
//显示的字段:{_id:0,name:1}
//db.c3.find({条件},{字段})
>db.c3.find({name:{$in:["root","daemon","bin"]}},{_id:0,name:1})
{"name" : "root" }
{"name" : "bin" }
{"name" : "daemon" }
>
//$nin []为列表
>db.c3.find({shell:{$nin:["/bin/bash","/sbin/nologin"]}},{_id:0,name:1,shell:1})
{"name" : "sync", "shell" : "/bin/sync"}
{"name" : "shutdown", "shell" :"/sbin/shutdown" }
{"name" : "halt", "shell" : "/sbin/halt"}
{"name" : "mysql", "shell" :"/bin/false" }
>
$or或
>db.c3.find({$or:[{name:"root"},{name:"mysql"}]},{_id:0,name:1})
{"name" : "root" }
{"name" : "mysql" }
>
匹配条件
正则匹配
db.c3.find({字段名:/正则表达式/},{显示的字段})
>db.c3.find({name:/^a/},{_id:0,name:1})
{"name" : "adm" }
{"name" : "abrt" }
{"name" : "avahi" }
{"name" : "apache" }
>db.c3.find({name:/^....$/},{_id:0,name:1})
{"name" : "yaya" }
{"name" : "root" }
{"name" : "sync" }
{"name" : "halt" }
{"name" : "mail" }
{"name" : "dbus" }
{"name" : "abrt" }
{"name" : "qemu" }
{"name" : "sshd" }
{"name" : "lisi" }
>
>db.c3.find({name:/..../},{_id:0,name:1}) //正则包含就可以
{"name" : "yaya" }
{"name" : "root" }
{"name" : "daemon" }
{"name" : "sync" }
{"name" : "shutdown" }
{"name" : "halt" }
{"name" : "mail" }
{"name" : "operator" }
{"name" : "games" }
{"name" : "nobody" }
{"name" : "systemd-network" }
{"name" : "dbus" }
{"name" : "polkitd" }
{"name" : "libstoragemgmt" }
{"name" : "colord" }
{"name" : "saslauth" }
{"name" : "abrt" }
{"name" : "rtkit" }
{"name" : "radvd" }
{"name" : "chrony" }
Type"it" for more
>
>db.c3.find({uid:3},{name:1,uid:1,_id:0})
{"name" : "adm", "uid" : 3 }
>
数值比较
$lt $lte $gt $gte $ne
< <= > >= !=
>db.c3.find({uid:{$gte:10,$lte:40}},{name:1,uid:1,_id:0}).sort({uid:1}).limit(1)
{"name" : "operator", "uid" : 11 }
>
匹配空值
>db.c3.save({name:null,uid:null})
WriteResult({"nInserted" : 1 })
>db.c3.find({name:null})
{"_id" : ObjectId("5b430a7670fa73faab18ef26"),"name" : null, "uid" : null }
>db.c3.find({gid:null},{_id:0}) //没有gid字段
{"name" : null, "uid" : null }
>
更新(修改文档列的值)
db.c3.update({条件},{修改的字段})
>db.c3.find({uid:{$lte:3}},{_id:0})
{"name" : "root", "password" : "x","uid" : 0, "gid" : 0, "comment" :"root", "homedir" : "/root", "shell": "/bin/bash" }
{"name" : "bin", "password" : "x","uid" : 1, "gid" : 1, "comment" :"bin", "homedir" : "/bin", "shell": "/sbin/nologin" }
{"name" : "daemon", "password" : "x","uid" : 2, "gid" : 2, "comment" :"daemon", "homedir" : "/sbin", "shell": "/sbin/nologin" }
{"name" : "adm", "password" : "x","uid" : 3, "gid" : 4, "comment" :"adm", "homedir" : "/var/adm", "shell": "/sbin/nologin" }
>
>db.c3.update({uid:{$lte:3}},{password:"AAA"}) //默认当条件成立时,会删除其他字段,只留下匹配字段
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.c3.find({uid:{$lte:3}},{_id:0})
{"name" : "bin", "password" : "x","uid" : 1, "gid" : 1, "comment" :"bin", "homedir" : "/bin", "shell": "/sbin/nologin" }
{"name" : "daemon", "password" : "x","uid" : 2, "gid" : 2, "comment" :"daemon", "homedir" : "/sbin", "shell": "/sbin/nologin" }
{"name" : "adm", "password" : "x","uid" : 3, "gid" : 4, "comment" :"adm", "homedir" : "/var/adm", "shell": "/sbin/nologin" }
>db.c3.find({password:"AAA"})
{"_id" : ObjectId("5b409025a0ae889363f8f26b"),"password" : "AAA" }
>
//$set默认只更新与条件匹配的第1行,false,true表示可以改所有
>db.c3.find({uid:{$lte:3}},{_id:0})
{"name" : "bin", "password" : "x","uid" : 1, "gid" : 1, "comment" :"bin", "homedir" : "/bin", "shell": "/sbin/nologin" }
{"name" : "daemon", "password" : "x","uid" : 2, "gid" : 2, "comment" :"daemon", "homedir" : "/sbin", "shell": "/sbin/nologin" }
{"name" : "adm", "password" : "x","uid" : 3, "gid" : 4, "comment" :"adm", "homedir" : "/var/adm", "shell": "/sbin/nologin" }
>db.c3.update({uid:{$lte:3}},{$set:{password:"F"}},false,true)
WriteResult({"nMatched" : 3, "nUpserted" : 0, "nModified": 3 })
>db.c3.find({uid:{$lte:3}},{_id:0})
{"name" : "bin", "password" : "F","uid" : 1, "gid" : 1, "comment" :"bin", "homedir" : "/bin", "shell": "/sbin/nologin" }
{"name" : "daemon", "password" : "F","uid" : 2, "gid" : 2, "comment" :"daemon", "homedir" : "/sbin", "shell": "/sbin/nologin" }
{"name" : "adm", "password" : "F","uid" : 3, "gid" : 4, "comment" :"adm", "homedir" : "/var/adm", "shell": "/sbin/nologin" }
>
//$unset删除文档指定的列
>db.c3.find({uid:{$lte:3}},{_id:0})
{"name" : "bin", "password" : "F","uid" : 1, "gid" : 1, "comment" :"bin", "homedir" : "/bin", "shell": "/sbin/nologin" }
{"name" : "daemon", "password" : "F","uid" : 2, "gid" : 2, "comment" :"daemon", "homedir" : "/sbin", "shell": "/sbin/nologin" }
{"name" : "adm", "password" : "F","uid" : 3, "gid" : 4, "comment" :"adm", "homedir" : "/var/adm", "shell": "/sbin/nologin" }
>db.c3.update({uid:1},{$unset:{password:"F"}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.c3.find({uid:1},{_id:0})
{"name" : "bin", "uid" : 1, "gid": 1, "comment" : "bin", "homedir" :"/bin", "shell" : "/sbin/nologin" }
>db.c3.find({uid:{$lte:3}},{_id:0})
{"name" : "bin", "uid" : 1, "gid": 1, "comment" : "bin", "homedir" :"/bin", "shell" : "/sbin/nologin" }
{"name" : "daemon", "password" : "F","uid" : 2, "gid" : 2, "comment" :"daemon", "homedir" : "/sbin", "shell": "/sbin/nologin" }
{"name" : "adm", "password" : "F","uid" : 3, "gid" : 4, "comment" :"adm", "homedir" : "/var/adm", "shell": "/sbin/nologin" }
>
$inc 自加减计算
>db.c3.find({name:"bin"},{_id:0,name:1,uid:1})
{"name" : "bin", "uid" : 1 }
>db.c3.update({name:"bin"},{$inc:{uid:2}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.c3.find({name:"bin"},{_id:0,name:1,uid:1})
{"name" : "bin", "uid" : 3 }
>
>db.c3.update({name:"bin"},{$inc:{uid:-1}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.c3.find({name:"bin"},{_id:0,name:1,uid:1})
{"name" : "bin", "uid" : 2 }
>
//管理数组类型的字段
>db.user.insert({name:"bob",likes:["a","b","c","d","e","f"]})
WriteResult({"nInserted" : 1 })
>db.user.find()
{"_id" : ObjectId("5b4314e470fa73faab18ef27"),"name" : "bob", "likes" : [ "a","b", "c", "d", "e", "f"] }
>
$push:可以重复添加
>db.user.update({name:"bob"},{$push:{likes:"w"}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.user.update({name:"bob"},{$push:{likes:"w"}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.user.find()
{"_id" : ObjectId("5b4314e470fa73faab18ef27"),"name" : "bob", "likes" : [ "a","b", "c", "d", "e", "f","w", "w" ] }
>
$addToSet:不允许重复添加
>db.user.update({name:"bob"},{$addToSet:{likes:"w"}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 0 })
>db.user.find()
{"_id" : ObjectId("5b4314e470fa73faab18ef27"),"name" : "bob", "likes" : [ "a","b", "c", "d", "e", "f","w", "w" ] }
>
//$pop负数从头部删除正数从尾部删除
>db.user.find()
{"_id" : ObjectId("5b4314e470fa73faab18ef27"),"name" : "bob", "likes" : [ "a","b", "c", "d", "e", "f","w", "w" ] }
>db.user.update({name:"bob"},{$pop:{likes:1}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.user.find()
{"_id" : ObjectId("5b4314e470fa73faab18ef27"),"name" : "bob", "likes" : [ "a","b", "c", "d", "e", "f","w" ] }
>db.user.update({name:"bob"},{$pop:{likes:-1}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.user.find()
{"_id" : ObjectId("5b4314e470fa73faab18ef27"),"name" : "bob", "likes" : [ "b","c", "d", "e", "f", "w"] }
>
>db.user.update({name:"bob"},{$pop:{likes:2}})
WriteResult({
"nMatched": 0,
"nUpserted": 0,
"nModified": 0,
"writeError": {
"code": 9,
"errmsg": "$pop expects 1 or -1, found: 2" //一次只能删除一个元素
}
})
>
$pull删除指定的元素
>db.user.update({name:"bob"},{$pull:{likes:"e"}})
WriteResult({"nMatched" : 1, "nUpserted" : 0, "nModified": 1 })
>db.user.find()
{"_id" : ObjectId("5b4314e470fa73faab18ef27"),"name" : "bob", "likes" : [ "b","c", "d", "f", "w" ] }
>
drop/remove
集合(drop删除集合同时删除索引)---》文档(remove只删除文档不删除索引)
删除文档 db.c6.remove({}) //{}不能省略表示所有条件
>db.c6.find()
{"_id" : ObjectId("5b42da3770fa73faab18ef24"),"name" : "zs", "age" : 19, "pay": 25800 }
{"_id" : ObjectId("5b42da3770fa73faab18ef25"),"name" : "ls", "school" : "test"}
>db.c6.remove({})
WriteResult({"nRemoved" : 2 })
>db.c6.find()
>
//删除与条件匹配的文档
>db.c3.remove({uid:4})
WriteResult({"nRemoved" : 1 })
>