设为首页 加入收藏

TOP

Mongodb数据库命令端常用操作(二)
2014-11-24 07:52:56 来源: 作者: 【 】 浏览:4
Tags:Mongodb 数据库 命令 常用 操作
r" : { "phone" : [ 123, 13, 186 ] } } { "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } } { "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }

# 对age%3==1的取模结果

> db.foo.find({'age':{'$mod':[3,1]}},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }

6.使用in, not in ($in, $nin)

#名字不是siwa且年龄在[15,25,85]

> db.foo.find({'name':{'$nin':['siwa']},'age':{'$in':[15,25,85]}},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }

7.匹配null操作

#名字是null的

> db.foo.find({'name':null},{'_id':0})
> 

8.使用like (mongoDB 支持正则表达式)

#名字like%iwa%的 #名字like yi%的

> db.foo.find({'name':/iwa/},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.find({'name':/^yi/},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }

9.使用distinct、count查询

> db.foo.distinct('name')
[ "yiwa", "erwa", "sanwa", "siwa" ]
> db.foo.count()
4

#distinct结合条件,排序使用

> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 95, "user" : { "phone" : [ 123, 133, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 133, 137, 186 ] } }
> db.foo.distinct("age",{'user.phone':{'$in':[63,65,186]}}).sort({'age':1})
[ 25, 85, 95 ]
> db.foo.distinct("age",{'user.phone':{'$in':[63,65,186]}}).sort({'age':-1})
[ 25, 85, 95 ]
> db.foo.distinct("age",{'user.phone':{'$in':[63,65,186]}})
[ 25, 95, 85 ]

待解疑问:?为什么 排序时候 age :-1 与 age :1 结果一样?

10.数组查询 (mongoDB自己特有的)(all,size)

#电话中含有186的

> db.foo.find({'user.phone':186},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }

#电话中含有188,186的

> db.foo.find({'user.phone':{'$all':[188,186]}},{'_id':0})
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }

#电话中有2个值的

> db.foo.find({'user.phone':{'$size':2}},{'_id':0})
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }

11.exists判断是否存在,type判断类型,Sort排序

#name中值是字符型,age中值是整型,按name升序,age降序

> db.foo.find({'name':{'$type':2},'age':{'$type':16}},{'_id':0}).sort({'name':1,'age':-1})
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }

#name中值存在的:true #name中值不存在的:false

> db.foo.find({'name':{'$exists':true}},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.find({'name':{'$exists':false}},{'_id':0})
> 

12.$elemMatch数组元素匹配

#插入测试数据

> db.foo.save({x:[{'a':1,'b':5},999,'liw',{'a':12},{'b':100}]})
WriteResult({ "nInserted" : 1 })

#查询某元素中a=1,b=5的元素

> db.foo.find({'x':{'$elemMatch':{'a':1,b:{'$gt':4}}}},{'_id':0})
{ "x" : [ { "a" : 1, "b" : 5 }, 999, "liw", { "a" : 12 }, { "b" : 100 } ] }
> db.foo.find({'x.a':1,'x.b':5},{'_id':0})
{ "x" : [ { "a" : 1, "b" : 5 }
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ubuntu安装Postgresql/Pgadmin3 下一篇频繁模式(项集)挖掘新算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中,“指针”用 (2025-12-26 15:20:18)
·在c语言的指针运算中 (2025-12-26 15:20:15)
·C语言-函数指针与函 (2025-12-26 15:20:12)
·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)