七、MongoDB文档管理


1.save( )
? 格式
– db.集合名.save({ key:“值”,key:”值”})
? 注意
– 集合不存在时创建集合,后插入记录
– _id字段值 已存在时 修改文档字段值
– _id字段值 不已存在时 插入文档
eg:
rs1:PRIMARY> db.game.save({‘name‘:‘英雄‘,‘grade‘:‘65‘})
WriteResult({ "nInserted" : 1 })
rs1:PRIMARY> db.game.save({‘name‘:‘英雄联盟‘,‘grade‘:‘65‘})
WriteResult({ "nInserted" : 1 })

2.insert()
? 格式
– db.集合名.insert({key:“值”,key:”值”})
? 注意
– 集合不存在时创建集合,后插入记录
– _id字段值 已存在时放弃插入
– _id字段值 不已存在时 插入文档
rs1:PRIMARY> db.game.insert({‘name‘:‘sanguo‘})
WriteResult({ "nInserted" : 1 })
插入多条记录
rs1:PRIMARY> db.student.insertMany(
... [
... {‘name‘:‘bob‘,‘age‘:‘18‘},
... {‘name‘:‘jarry‘,‘age‘:‘20‘}
... ]
... )
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("60e6be9c18d12f7f410dee33"),
ObjectId("60e6be9c18d12f7f410dee34")
]
}
3. 查询文档
3.1 查询语法
? 显示所有行,默认一次只输出20 行 输入it 显示后续的行
– db.集合名.find()
? 显示第1行
– > db.集合名.findOne()
? 指定查询条件并指定显示的字段
– > db.集合名.find({条件},{定义显示的字段})
– > db.user.find({},{_id:0,name:1,shell:1})
– 0 不显示 1 显示
3.2 行数显示限制
? limit(数字) //显示前几行
> db.集合名.find().limit(3)
? skip(数字) //跳过前几行
– > db.集合名.find().skip(2)
? sort(字段名) //排序
– > db.集合名.find().sort(age:1|-1) 1 升序 -1 降序
– > db.user.find({shell:"/sbin/nologin"},{_id:0,name:1,uid:
1,shell:1}).skip(2).limit(2)
3.3 查询条件
简单条件
– db.集合名.find({key:”值”})
– db.集合名.find({key:”值”,keyname:”值”})
– db.user.find({shell:"/bin/bash"})
– db.user.find({shell:"/bin/bash",name:"root"})
范围比较
– $in 在…里
– $nin 不在…里
– $or 或
– > db.user.find({uid:{$in:[1,6,9]}})
– > db.user.find({uid:{$nin:[1,6,9]}})
– > db.user.find({$or: [{name:"root"},{uid:1} ]})
正则匹配
– > db.user.find({name: /^a/ })
? 数值比较
– $lt $lte $gt $gte $ne
< <= > >= !=
– db.user.find( { uid: { $gte:10,$lte:40} } , {_id:0,name:1,uid:1})
– db.user.find({uid:{$lte:5,}})
匹配null ,也可以匹配没有的字段
– > db.user.save({name:null,uid:null})
– > db.user.find({name:null})
{ "_id" : ObjectId("5afd0ddbd42772e7e458fc75"), "name" : null, "uid" : null }
3.4 更新文档
语法格式
– > db.集合名.update({条件},{修改的字段})
注意:把文件的其他字段都删除了,只留下了password字段,且只修改与条件匹配的第1行!!!
3.5 $set / $unset
? $set 条件匹配时,修改指定字段的值
– db.user.update({条件},$set: {修改的字段})
– db.user3.update({name:"bin"},{$set:{password:"A"}}
? $unset 删除与条件匹配文档的字段
– db.集合名.update({条件},{$unset:{key:values}})
– db.user3.update({name:"bin"},{$unset:{password:"A"}})
3.6 多文档更新
? 语法格式:默认只更新与条件匹配的第1行
– > db.user.update({条件},{$set:{修改的字段}} ,false,
true)
– > db.user.update({name:“bin”},{$set:{password:“abc12123”}},false,true)
$inc
? $inc 条件匹配时,字段值自加或自减
– Db.集合名.update({条件},{$inc:{字段名:数字}})
注:正整数自加,负整数自减!!!!!
– db.user.update({name:"bin"},{$inc:{uid:2}}) 字段值自加2
– db.user.update({name:“bin”},{$inc:{uid:-1}}) 字段自减1
3.7 $push / $addToSet
? $push 向数组中添加新元素
– db.集合名.update({条件},{$push:{数组名:“值”}})
– db.user.insert({name:"bob",likes:["a","b","c","d","e","f"]})
– db.user.update({name:“bob”},{$push:{likes:“w"}})
? $addToSet 避免重复添加
– db.集合名.update({条件},{$addToSet:{数组名:”值”}}) db.user.update({name:"bob"},{$addToSet:{likes:“f"}})
3.8 $pop /$pull
$pop从数组头部删除一个元素
– db.集合名.update({条件},{$pop:{数组名:数字}})
– db.user.update({name:"bob"},{$pop:{likes:1}})
– db.user.update({name:"bob"},{$pop:{likes:-1}})
1 删除数组尾部元素 -1 删除数组头部元素
? $pull 删除数组指定元素
– db.集合名.update({条件},{$pull:{数组名:值}})
– db.user.update({name:"bob"},{$pull:{likes:"b"}})
4. 删除文档
$drop/$remove
? $drop 删除集合的同时删除索引
– db.集合名.drop( )
– db.user.drop( )
? remove()删除文档时不删除索引
– db.集合名.remove({}) //删除所有文档
– db.集合名.remove({条件}) //删除与条件匹配的文档
– db.user.remove({uid:{$lte:10}})
– db.user.remove({})

七、MongoDB文档管理

上一篇:java 自动升级sql脚本 flyway 工具


下一篇:python_01_程序与数据库存储