mongodb--find高级用法
2024-08-31 06:02:24
链式查询
db.person.find().limit(4).sort({sex:-1}) // sort来说,1 是升序, -1 是降序
尽量不要用mongodb去做一些复杂的运算
分页的写法
···
最简单的分页的写法
var page1 = db.person.find(name).limit(100);
var page2 = db.person.find(name).skip(100).limit(100);
···
指定选中的列保留
db.str.find({},{_id:0,age:1}); //查询出age,不要_id
大于小于等于
> var cond={"age":{"$gte":1,"$lte":2}}
> db.person.find(cond)
{ "_id" : ObjectId("56760f3c5001a3b4af601567"), "name" : "hxc19", "age" : 1 }
{ "_id" : ObjectId("56760f3c5001a3b4af601568"), "name" : "hxc20", "age" : 1.0526315789473684 }
in,nin,or in,nin:一个key后再加上一个子文档。
> var cond={"age":{"$in":[1,2,3,4]}}
> db.person.find(cond)
{ "_id" : ObjectId("56760f3c5001a3b4af601567"), "name" : "hxc19", "age" : 1 }
find中的正则表达式,和sql中的like操作一个样 O(N) Table Scan
> var cond={"name":/18$/}
> db.person.find(cond)
{ "_id" : ObjectId("56760f3c5001a3b4af601566"), "name" : "hxc18", "age" : 0.9473684210526315 }
查询数组中的元素
> var single={"name":"jack",address:["anhui","shanghai","beijing"]}
> db.mytest.insert(single)
> db.mytest.find()
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [ "anhui", "shanghai", "beijing" ] }
> db.mytest.find({"address":"anhui"})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [ "anhui", "shanghai", "beijing" ] }
all操作
db.mytest.find({"address":{"$all":["anhui","shanghai"]}})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [ "anhui", "shanghai", "beijing" ] }
db.mytest.find({"address":{"$all":["anhui","s"]}})
size操作
db.mytest.find({"address":{"$size":2}})
db.mytest.find({"address":{"$size":3}})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [ "anhui", "shanghai", "beijing" ] }
slice操作
db.mytest.find({"name":"jack"},{"address":{"$slice":1}})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [ "anhui" ] }
db.mytest.find({"name":"jack"},{"address":{"$slice":2}})
{ "_id" : ObjectId("567632624163f2ea4dd06e96"), "name" : "jack", "address" : [ "anhui", "shanghai" ] }
where 【更灵活更强大】
可以灌输js代码,所以会有最大的灵活性。
db.person.find({"$where":function(){return this.name=="hxc19" && this.age==1}})
{ "_id" : ObjectId("56760f3c5001a3b4af601567"), "name" : "hxc19", "age" : 1 }
db.person.find({"$where":function(){ var i=1; return (this.age/1)==1 }})
{ "_id" : ObjectId("56760f3c5001a3b4af601567"), "name" : "hxc19", "age" : 1 }
db.person.find({"$where":function(){return ( this.age>1&& this.age<2); }})
{ "_id" : ObjectId("56760f3c5001a3b4af601568"), "name" : "hxc20", "age" : 1.0526315789473684 }
{ "_id" : ObjectId("56760f3c5001a3b4af601569"), "name" : "hxc21", "age" : 1.105263157894737 }
{ "_id" : ObjectId("56760f3c5001a3b4af60156a"), "name" : "hxc22", "age" : 1.1578947368421053 }
{ "_id" : ObjectId("56760f3c5001a3b4af60156b"), "name" : "hxc23", "age" : 1.2105263157894737 }
最新文章
- QEMU VCPU热插特性
- 微信开放平台开发——网页微信扫码登录(OAuth2.0)
- ArrayList实现源码分析
- Tornado服务器的学习
- 案例:用JS实现放大镜特效
- 眼见为实(2):介绍Windows的窗口、消息、子类化和超类化
- java八大基本数据类型
- NYoj_104最大和
- Java第一、二次实训作业
- Gitlab迁移之数据库报错解决
- Delphi编程中动态菜单要点归纳
- mail.jar 发送邮件
- P2467 [SDOI2010]地精部落 (dp+组合数)【扩展Lucas好难不会】
- RavenDb学习(九)高级特性下半部分
- 关于Unity中Mecanim动画的重定向与动画混合
- 如何通过SSH及其Client 批量分发文件和执行管理命令
- Python数值运算与赋值的快捷方式
- web移动端一些常用知识
- C++实现委托机制(二)
- Ajax和Jsonp实践