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 }] })