链式查询

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 }

最新文章

  1. QEMU VCPU热插特性
  2. 微信开放平台开发——网页微信扫码登录(OAuth2.0)
  3. ArrayList实现源码分析
  4. Tornado服务器的学习
  5. 案例:用JS实现放大镜特效
  6. 眼见为实(2):介绍Windows的窗口、消息、子类化和超类化
  7. java八大基本数据类型
  8. NYoj_104最大和
  9. Java第一、二次实训作业
  10. Gitlab迁移之数据库报错解决
  11. Delphi编程中动态菜单要点归纳
  12. mail.jar 发送邮件
  13. P2467 [SDOI2010]地精部落 (dp+组合数)【扩展Lucas好难不会】
  14. RavenDb学习(九)高级特性下半部分
  15. 关于Unity中Mecanim动画的重定向与动画混合
  16. 如何通过SSH及其Client 批量分发文件和执行管理命令
  17. Python数值运算与赋值的快捷方式
  18. web移动端一些常用知识
  19. C++实现委托机制(二)
  20. Ajax和Jsonp实践

热门文章

  1. Single document interface和Multiple document interface
  2. MySQL 基础 —— 字符串处理
  3. ubuntu 12.10 禁用触摸板
  4. 第2章 安装Nodejs 2-4 Linux下安装Nodejs
  5. Oracle创建用户教程
  6. Web框架系列之Tornado
  7. File入门及路径名问题
  8. Hibernate搭建框架(一)
  9. nodejs要远程连接另一个主机上的monogodb数据库服务器
  10. CSS框架Bootstrap