mongo查询总结

对foo 添加元素:
 for(i=1;i<=10;i++){
	db.foo.insert({name:'wxz'+i,age:i});
 }
 
 查看数据:
 db.foo.find() 
{ "_id" : ObjectId("5deaa110b636150f1bc3e7cf"), "name" : "wxz1", "age" : 1 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d0"), "name" : "wxz2", "age" : 2 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d1"), "name" : "wxz3", "age" : 3 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d2"), "name" : "wxz4", "age" : 4 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d3"), "name" : "wxz5", "age" : 5 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d4"), "name" : "wxz6", "age" : 6 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d5"), "name" : "wxz7", "age" : 7 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d6"), "name" : "wxz8", "age" : 8 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d7"), "name" : "wxz9", "age" : 9 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d8"), "name" : "wxz10", "age" : 10 }

$in 的使用
查询age为 1,5,7 的数据
db.foo.find({age:{'$in':[1,5,7]}})
{ "_id" : ObjectId("5deaa110b636150f1bc3e7cf"), "name" : "wxz1", "age" : 1 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d3"), "name" : "wxz5", "age" : 5 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d5"), "name" : "wxz7", "age" : 7 }

 
$nin 的使用
查询age不是 1,5,7 的数据
db.foo.find({age:{'$nin':[1,5,7]}})
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d0"), "name" : "wxz2", "age" : 2 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d1"), "name" : "wxz3", "age" : 3 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d2"), "name" : "wxz4", "age" : 4 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d4"), "name" : "wxz6", "age" : 6 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d6"), "name" : "wxz8", "age" : 8 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d7"), "name" : "wxz9", "age" : 9 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d8"), "name" : "wxz10", "age" : 10 }

$or 的使用
查询name是 wxz2 或  wxz5 的数据
db.foo.find({$or:[{'name':'wxz2'},{name:'wxz5'}]})
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d0"), "name" : "wxz2", "age" : 2 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d3"), "name" : "wxz5", "age" : 5 }

$nor 的使用
不要name 是 wxz2 和 wxz5 的数据
db.foo.find({$nor:[{name:'wxz2'},{'name':'wxz5'}]});
{ "_id" : ObjectId("5deaa110b636150f1bc3e7cf"), "name" : "wxz1", "age" : 1 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d1"), "name" : "wxz3", "age" : 3 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d2"), "name" : "wxz4", "age" : 4 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d4"), "name" : "wxz6", "age" : 6 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d5"), "name" : "wxz7", "age" : 7 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d6"), "name" : "wxz8", "age" : 8 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d7"), "name" : "wxz9", "age" : 9 }
{ "_id" : ObjectId("5deaa110b636150f1bc3e7d8"), "name" : "wxz10", "age" : 10 }





db.createCollection('c2')
db.c2.insert({name:'wxz1',post:[1,2,3,4,5]})
db.c2.insert({name:'wxz2',post:[6,7,8,9,10]})
db.c2.insert({name:'wxz3',post:[4,5,6,9,10]})
db.c2.insert({name:'wxz4',post:[9,10]})
db.c2.insert({name:'wxz5',post:[9,10,11]})


$size
查询 post 集合数量为3的数据
db.c2.find({post:{$size:3}})
{ "_id" : ObjectId("5deaa528b636150f1bc3e7dd"), "name" : "wxz5", "post" : [ 9, 10, 11 ] }

$where 
查询name 是wxz1 或 wxz2的数据
db.c2.find({$where:function(){return this.name=='wxz1'|| this.name=='wxz2'}});
{ "_id" : ObjectId("5deaa4f5b636150f1bc3e7d9"), "name" : "wxz1", "post" : [ 1, 2, 3, 4, 5 ] }
{ "_id" : ObjectId("5deaa50ab636150f1bc3e7da"), "name" : "wxz2", "post" : [ 6, 7, 8, 9, 10 ] }

添加一条数据
db.c2.insert({name:'WXz2',post:[1,2,3]})
//的使用
查询 name 中包含 wxz 的数据
db.c2.find({name:/wxz/})
{ "_id" : ObjectId("5deaa4f5b636150f1bc3e7d9"), "name" : "wxz1", "post" : [ 1, 2, 3, 4, 5 ] }
{ "_id" : ObjectId("5deaa50ab636150f1bc3e7da"), "name" : "wxz2", "post" : [ 6, 7, 8, 9, 10 ] }
{ "_id" : ObjectId("5deaa516b636150f1bc3e7db"), "name" : "wxz3", "post" : [ 4, 5, 6, 9, 10 ] }
{ "_id" : ObjectId("5deaa51eb636150f1bc3e7dc"), "name" : "wxz4", "post" : [ 9, 10 ] }
{ "_id" : ObjectId("5deaa528b636150f1bc3e7dd"), "name" : "wxz5", "post" : [ 9, 10, 11 ] }
//i 的使用(忽略大小写)
查询 name 中包含 wxz 的数据
db.c2.find({name:/wxz/i})
{ "_id" : ObjectId("5deaa4f5b636150f1bc3e7d9"), "name" : "wxz1", "post" : [ 1, 2, 3, 4, 5 ] }
{ "_id" : ObjectId("5deaa50ab636150f1bc3e7da"), "name" : "wxz2", "post" : [ 6, 7, 8, 9, 10 ] }
{ "_id" : ObjectId("5deaa516b636150f1bc3e7db"), "name" : "wxz3", "post" : [ 4, 5, 6, 9, 10 ] }
{ "_id" : ObjectId("5deaa51eb636150f1bc3e7dc"), "name" : "wxz4", "post" : [ 9, 10 ] }
{ "_id" : ObjectId("5deaa528b636150f1bc3e7dd"), "name" : "wxz5", "post" : [ 9, 10, 11 ] }
{ "_id" : ObjectId("5deaa77eb636150f1bc3e7de"), "name" : "WXz2", "post" : [ 1, 2, 3 ] }

distinct 的使用 获取某一个字段的不重复值
查看name 的不重复值
db.c2.distinct('name')
[ "wxz1", "wxz2", "wxz3", "wxz4", "wxz5", "WXz2" ]

skip 的用法  
查询第三条之后的数据,包含第三条
db.c2.find().skip(2)
{ "_id" : ObjectId("5deaa516b636150f1bc3e7db"), "name" : "wxz3", "post" : [ 4, 5, 6, 9, 10 ] }
{ "_id" : ObjectId("5deaa51eb636150f1bc3e7dc"), "name" : "wxz4", "post" : [ 9, 10 ] }
{ "_id" : ObjectId("5deaa528b636150f1bc3e7dd"), "name" : "wxz5", "post" : [ 9, 10, 11 ] }
{ "_id" : ObjectId("5deaa77eb636150f1bc3e7de"), "name" : "WXz2", "post" : [ 1, 2, 3 ] }


limit 的用法
查询第三条之后的数据,包含第三条,且只要两条
db.c2.find().skip(2).limit(2)
{ "_id" : ObjectId("5deaa516b636150f1bc3e7db"), "name" : "wxz3", "post" : [ 4, 5, 6, 9, 10 ] }
{ "_id" : ObjectId("5deaa51eb636150f1bc3e7dc"), "name" : "wxz4", "post" : [ 9, 10 ] }


db.createCollection('c3')
db.c3.insert({name:'user1',post:[{title:1},{title:2},{title:3}]});
db.c3.insert({name:'user2',post:[{title:'one'},{title:'two'},{title:'three'}]});


查找 title 为2的那条记录
db.c3.find({'post.title':2})
{ "_id" : ObjectId("5deb31f3dcc5b25963348d26"), "name" : "user1", "post" : [ { "title" : 1 }, { "title" : 2 }, { "title" : 3 } ] }

#避免上面语句.可能会在其他语言有影响,可以使用以下方式
db.c3.find({post:{$elemMatch:{title:2}}});
{ "_id" : ObjectId("5deb31f3dcc5b25963348d26"), "name" : "user1", "post" : [ { "title" : 1 }, { "title" : 2 }, { "title" : 3 } ] }



 
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值