pretty查询格式化
db.col.find().pretty()
$set修改器
用来修改一个指定的键值(key)
db.user.update({name: ‘hank’}, {$set: {kill: [‘code’]}})
$unset用于将key删除
db.user.update({name: ‘hank’}, {$unset: {age: ‘’})
$inc对数字进行计算
db.user.update({name: ‘hank’}, {$inc: {age: 2})
multi
multi是有ture和false两个值,true代表全部修改,false代表只修改一个(默认值)
db.user.update({}, {$set: {insterest: []}}, {mul})
upsert选项
upsert是在找不到值的情况下,直接插入这条数据。比如我们这时候又来了一个新同事xiaoWang,我们这时候修改他的信息,age设置成20岁,但集合中并没有这条数据。这时候可以使用upsert选项直接添加。
db.user.update({name: ‘xiaoWang’},{$set: {age: 20}}, {upsert: true})
$push追加数组/内嵌文档值
$push的功能是追加数组中的值,但我们也经常用它操作内嵌稳文档,就是{}对象型的值。先看一个追加数组值的方式,比如我们要给小王加上一个爱好(interset)为画画(draw):
db.user.update({name: ‘xiaoWang’},{"$push": {interest: ‘draw’}})
$ne查找是否存在
检查一个值存在不存在
db.user.update({name: ‘xiaoWang’,interest: {KaTeX parse error: Expected 'EOF', got '}' at position 11: ne: 'draw'}̲}, {push: {interest: ‘watch’}})
a d d T o S e t 升 级 版 的 addToSet 升级版的 addToSet升级版的ne
如果添加的字段中 存在该值就不添加,没有则添加
db.user.update({name: ‘xiaoWang’},{"$addTOSet": {interest: ‘draw’}})
$each 批量追加
var newInterset=["Sing","Dance","Code"];
db.workmate.update({name:"xiaoWang"},{$addToSet:{interest:{$each:newInterset}}})
$gte(大于等于) $lte(小于等于) $gt $lt
应答式操作findAndModify
- query:需要查询的条件/文档
- sort: 进行排序
- remove:[boolean]是否删除查找到的文档,值填写true,可以删除。
- new:[boolean]返回更新前的文档还是更新后的文档。
- fields:需要返回的字段
- upsert:没有这个值是否增加。
var myModify={
findAndModify:"workmate",
query:{name:'hank'},
update:{$set:{age:20}},
new:true //更新完成,需要查看结果,如果为false不进行查看结果
}
var ResultMessage=db.runCommand(myModify);
printjson(ResultMessage)
find
$in
字段有多个值
$or
多个字段
$and
多个字段必须成立
$not
字段不等于某个值
数组查询
字段后 没有修饰符时 带有 [] 必须全等 c才能返回结果
字段后 没有修饰符时 字段后 : ‘’, 包含就可查出
$in-数组的或者查询
db.user.find(
{interest:{$in:["看电影","看书"]}},
{name:1,interest:1,age:1,_id:0}
)
$size数组个数查询
db.user.find(
{interest:{$size:5}},
{name:1,interest:1,age:1,_id:0}
)
$all数组多项查询
b.user.find(
{interest:{all:[‘draw’,‘watch’]}},
{name:1,interest:1,age:1,_id:0}
)
$slice-显示选项
db.workmate.find(
{},
{name:1,interest:{$slice:2},age:1,_id:0}
)
这时候就显示了每个人的兴趣的前两项,如果我们想显示最后一项,可以直接使用slice : -1 来进行查询。
b.user.find(
{ },
{name:1,interest:1,age:1,_id:0}
).limit(2).skip(0).sort(-1)
索引
不超过10000条 不使用索引
最多创建60条索引
创建索引
db.集合名称.ensureIndex({字段名:1})
查看现有索引
db.user.getIndexes()
指定索引查询(hint)
db.user.find({name: ‘hank’}).hint({’_id’: 0})
删除索引
db.user.dropIndex(‘id’)