MongoDB 查询文档

MongoDB 查询文档使用 find() 方法。

(一)、find() 基本查询

find() 方法以非结构化的方式来显示所有文档。

语法: db.collection.find(query, projection)

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

案例:

1、通过ID查询所有的列

db.PageColllection.find({'Cust_id':2185123})

2、通过ID查询返回指定的列和id字段,默认是id字段也是返回的。

db.PageColllection.find({'Cust_id':2185123},{ Cust_id:1,finger:1,FromArea:1,FromCity:1,FromPro:1,ip:1})

3、仅返回指定字段,排除掉默认的id字段

db.PageColllection.find({'Cust_id':2185123},{_id:0, Cust_id:1,finger:1,FromArea:1,FromCity:1,FromPro:1,ip:1})

4、返回除了某些元素以外的所有元素

db.PageColllection.find({'Cust_id':2185123},{ finger:0,FromArea:0})

注意:

映射(projection )声明用来限制所有查询匹配文档的返回字段;

指定要包含的字段(例如: {field:1})或者指定要排除的字段(例如:{field:0});

默认_id是包含在结果集合中的,要从结果集中排除_id字段 ;

除了_id字段,不能在一个projection中联合使用包含和排除语意;。

(二)、MongoDB 的条件语句查询

 案例:

1、等于查询 :返回所有的列

db.PageColllection.find({"Cust_id":2185123})

 2、小于查询:通过时间戳查询  返回 小于某一 时间戳的 所有的列

db.PageColllection.find({"unixTime":{$lt:1586945087529}})

3、小于或等于查询 :通过时间戳查询 返回小于或等于 某一时间戳的 所有列

db.PageColllection.find({"unixTime":{$lte:1586945087529}})

4、大于 : 通过时间戳查询 返回 大于 某一时间戳的所有列

db.PageColllection.find({"unixTime":{$gt:1586945087529}})

5、大于或 等于:通过时间戳查询 返回 大于 或 等于 某一时间戳的所有列

db.PageColllection.find({"unixTime":{$gte:1586945087529}})

6、不等于: 通过时间戳查询 返回 不等于 某一时间戳的所有列

db.PageColllection.find({"unixTime":{$ne:1586945087529}})

(三)、MongoDB AND 条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

语法:db.col.find({key1:value1, key2:value2}).pretty()

案例:

查询 出发地为 河南省 郑州市  市辖区 的所有数据

db.PageColllection.find({FromPro:'河南省',FromCity:'郑州市',FromArea:'市辖区'})

 (四) 、MongoDB OR 条件

   MongoDB OR 条件语句使用了关键字 $or,语法格式如下

 db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ) 

案例:查询出发地市级 为郑州市 或者 兰州市 的数据

 db.PageColllection.find({ $or:[ {FromCity:'郑州市'}, {FromCity:'兰州市'} ] } ) 


(五)、
AND 和 OR 联合使用

案例:查询会员Id为2456841 并且  时间戳为 1586413176954 或者 1586413178525的所有列

 db.PageColllection.find({ Cust_id: 2456841, $or: [{ unixTime: 1586413176954 }, { unixTime: 1586413178525 }] })  




 
 
 
 
原文地址:https://www.cnblogs.com/Learnall/p/12803327.html