mongo 操作符详解

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 升级版的 addToSetne

如果添加的字段中 存在该值就不添加,没有则添加

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’)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值