源数据

{  "uuid" : 12700004,  "card" : 981.3000000000029,"weixin" : {"unionId" : "o1wS90l6kHDFXY2lAPDb9bPxRZxI1","openId" : "o9zCJ1Aat93B0UjdlCFDAWmimBcEb","nick" : "麦袋","sex" : 1,"avatar" : "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eoNcMa5gLGs9iaTYCmNqycSk5XUWzKDVfj6sPkk1Oia0YSy3SmMrcX3kxsvEu4UfiblckRo7CpM0xicKg/1321"},"liaobe" : null,"mobile" : {"number" : "18874819762"},"visitor" : null,"accountType" : 1,"mobileRewardReceived" : true
}

MongoDB 查询数据的语法格式如下:db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)

一、查询所有数据

显示所有列

db["user"].find()                # MongoDB写法
db["user"].find().pretty()       # 是find出的数据在命令行中更加美观显示,不至于太紧凑,同select * from user\G;
select * from user;         

显示指定列

db["user"].find({},{"liaobe":1,"mobile":1}).pretty()        # 如果projection不为空,不需要查询条件时,必须键入{}    # projection 指定哪些列显示和不显示 (0:不显示 1:显示)select liaobe,mobile from user\G;                  

查询json数据二级数据

 "mobile" : {"number" : "18874819762"},

以上数据,要查询number=18874819762的数据

db["user"].find({"mobile.number":"18874819762"}).pretty()       # 一级.二级.三级,依次类推

二、等于条件查询

db["user"].find({"accountType" : 1}).pretty()   select * from user where accountType=1\G;

三、and

db["user"].find({"uuid" : 12700004,"accountType" : 1,"authType" : 2}).pretty()       # 多个条件用, 隔开select * from user where uuid=12700004 and accountType=1 and authType=2\G;       

四、or

db["user"].find({'$or':[{"mobile.number":"18874819762"},{"weixin.unionId":"o1wS90vp2ENW2Vu-QTnHlcrdU5kA"}]},{"weixin.nick":1}
).pretty()

select nick from user where number='18874819762' or unionId='o1ws90vp2ENW2Vu-QTnH1crdU5kA'  

五、< <= > >= (lt lte gt gte)

db["user"].find({'card':{$lt:5}}).pretty()                             # select * from user where card < 5\G;
db["user"].find({'card':{$gt:0,$lt:5}},{"card":1}).pretty()            # select card from user where card > 0 and card <5\G;
db["user"].find({'card':{$lte:5}},{"card":1}).pretty()                # select card from user where card <=5;\G;
db["user"].find({'card':{$gte:0,$lte:5}},{"card":1}).pretty()        # select card from user where card >=0 and card <=5\G;

六、使用in,not in (in,nin)

db["user"].find({"uuid":{$in:[83405282,25594661]}},{"uuid":1,"card":1}).pretty()        # select uuid,card from user where uuid in(83405282,25594661)\G;
db["user"].find({"authType":{$nin:[2,1]}},{"uuid":1,"card":1,"authType":1}).pretty()    # select uuid,card,authType from user where authType not in(2,1)\G;

七、匹配null

db["user"].find({"liaobe":null},{"uuid":1,"weixin.nick":1,"liaobe":1}).pretty()      # select uuid,nick,liaobe from user where liaobei is null\G;

八、like(MongoDB支持正则表达式)

db["user"].find({"weixin.nick":/^随梦/},{"uuid":1,"weixin.nick":1}).pretty()       # select uuid,nick from user where nick like '随梦%'\G;
db["user"].find({"weixin.nick":/袋$/},{"uuid":1,"weixin.nick":1}).pretty()         # select uuid,nick,from user where nick like '%袋'\G;

九、distinct去重

db["user"].distinct("weixin.nick",{"weixin.nick":/^随梦/})       # select distinct(nick) from user where nick like "随梦%";

十、count统计

db["user"].find({"card":{$lt:5}}).count()                      # select count(*) from user where card <5;

db.runCommand(    {       distinct: "user",       key: "weixin.nick",       query: { card: {"$lt":5}}    } ).values.length;           # 先通过find查出数据,然后去重,最后统计

十一、排序

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

db["user"].find({"card":{$gt:10,$lt:20}},{"uuid":1,"weixin.nick":1,"card":1}).sort({"card":1})        # select uuid,nick,card from user where card>10 and card<20 asc;
db["user"].find({"card":{$gt:10,$lt:20}},{"uuid":1,"weixin.nick":1,"card":1}).sort({"card":-1})          # select uuid,nick,card from user where card>10 and card<20 desc;

十二、limit

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

db["user"].find({"card":{$gt:10,$lt:20}},{"uuid":1,"weixin.nick":1,"card":1}).sort({"card":1}).limit(5)  

转载于:https://www.cnblogs.com/lichunke/p/10913549.html

MongoDB find方法相关推荐

  1. 【MongoDB】MongoDB备份方法

    2019独角兽企业重金招聘Python工程师标准>>> MongoDB备份方法 On this page Back Up with MongoDB Cloud Manager or ...

  2. Spark With Mongodb 实现方法及error code -5, 6, 13127解决方案

    Spark With Mongodb 实现方法及error code -5, 6, 13127解决方案 参考文章: (1)Spark With Mongodb 实现方法及error code -5, ...

  3. mongodb 导出到sqlserver_迁移sqlserver数据到MongoDb的方法

    迁移sqlserver数据到MongoDb的方法 前言 随着数据量的日积月累,数据库总有一天会不堪重负的,除了通过添加索引.分库分表,其实还可以考虑一下换个数据库.我强烈推荐使用MongoDb,我举例 ...

  4. mongodb配置文件启动linux,Linux运维知识之Mongodb启动方法:设定参数启动;从设置文件启动...

    本文主要向大家介绍了Linux运维知识之Mongodb启动方法:设定参数启动;从设置文件启动,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 接手的MongoDB只有一个日志文件 ...

  5. java 操作 mongodb_Java操作MongoDB数据库方法详解

    Java与mongodb的连接 1. 连单台mongodb Mongo mg = new Mongo();//默认连本机127.0.0.1 端口为27017 Mongo mg = new Mongo( ...

  6. 查看mongodb数据路径_Mac OS 中安装和使用 MongoDB 的方法

    点击上方蓝字,获得更多精彩内容 安装 MongoDB 1.访问 MongoDB 官方,并下载最新版本,下载地址为: https://www.mongodb.com/try?jmp=nav#commun ...

  7. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

  8. golang 撤回_golang 连接mongoDB的方法示例

    Mogondb 不支持事务.所有有事务要求的需求慎用,比如银行的转账操作慎用,转1个亿美金,因为网络,电力的故障导致交易没有完成,不能回滚,交易无法撤回.所有慎用!! Mogondb 的应用场景: 比 ...

  9. MongoDB学习笔记(七)——MongoDB shell方法汇总

    在写前面的博文的时候,我发现MongoDB shell提供了很多方法,其中MongoDB的很多方法也在其中,下面是我从MongoDB官网上查到的所有MongoDB shell的所有方法,当然,我不会对 ...

  10. 安装 express4 linux,nodejs+express4.0+mongodb安装方法 for Linux, Mac

    废话不多说 1:下载nodejs包 下载source code版本需要解压后到其目录执行./configure,然后make && make install; 而binaries的ta ...

最新文章

  1. B站最火数学视频3Blue1Brown是如何制作的
  2. 5G时代下的网络营销对移动端网站建设形成怎样的冲击?
  3. python叫什么-又一个python小游戏,叫什么不知道了。。。
  4. 常用的HTML标签和属性解释
  5. 列举python的5个数据类型_python公开课|新公布的5个python核心数据类型,这些细节你难道还不不知道吗...
  6. 脚本 api_从脚本到预测API
  7. java session 生命周期_Java中httpsession生命周期
  8. mysql不能做端点测试吗_端点测试的分步介绍
  9. Windows域策略 设置客户端服务启动状态 【全域策略生效】
  10. 我优化多年的 C 语言竟然被 80 行 Haskell 打败了?
  11. 如果知道它们的热量,还想点吗?
  12. 广播BroadcastReceiver(2)
  13. 解决办法:GTK+ 2.x symbols detected
  14. NPM安装依赖包,报错node-gyp rebuild...解决方法
  15. Qt编译QtXlsx库
  16. CentOS 7 添加新硬盘
  17. 什么是手机号码姓名实名认证 手机号码查姓名 手机号实名认证API
  18. 感恩节,《2012》,尖叫
  19. 链塔小程序产品更新说明
  20. java des ecb_【转】 java DES ECB模式对称加密解密

热门文章

  1. hdu 3339 In Action
  2. 土豆首页图片延迟加载的效果
  3. 收下这10个终身学习的资源号,Max你的工作效率
  4. R语言中文社区2018年终文章整理(类型篇)
  5. Abp框架多租户源码解读
  6. P1352 没有上司的舞会[树形dp]
  7. c#+asp.net如何删除指定路径下的文件和文件夹
  8. JSP/Servlet-----charset 、pageEncoding差别
  9. Hosting WCF in SharePoint 2007 (Part 1) 基本部署(转)
  10. 今天完成了一个真正意义上完整的gridview数据表操作