MongoDB使用find来执行查询。find的第一个参数相当于where,其形式也是一个文档,说明查询所需匹配的条件,文档中的多个key/value能够实现类似AND的操作。
1 指定所需返回的键 (默认总会返回“_id"键,除非声明为0)
db.mydb.find({}, {"name": 1, "_id": 0})
2 指定复杂查询条件,可以利用"$lt"、"$lte"、"gt"、"gte"和"$ne"等比较操作符,形成复杂的查询条件。
db.mydb.find({"age": {"$gte": 10, "$lte": 20}})
3 OR查询
db.mydb.find({"age": {"$in": [10, 20, 30])))
db.mydb.find({"age": {"$nin": [10, 20, 30]}})
db.mydb.find({"$or": [{"gender": "female"}, {"name": "winstar"}]})
4 $mod条件
db.mydb.find({"age": {"$mod": [3, 2]}})
5 $not条件
db.mydb.find({"age": {"$not": {"$mod": [3, 2]}}})
6 null
(1)简单方式
db.mydb.find({name: null})
将匹配“name"的值为null的文档以及根本没有”name“这个字段的文档。
(2)复杂方式--确保含有”name”字段,但值为null的文档
db.mydb.find({"name": {"$in": [null], "$exists": true}})
7 正则表达式
db.mydb.find({"name": /winstar/i})
8 根据单个数组元素值查询
db.mydb.insert({"friends": ["winstar", "jack", "john"]}) db.mydb.find({"friends": "jack"})
9 根据数据中的多个元素值查询
db.mydb.find({"friend": {"$all": ["jack", "john"]}})
10 根据数组指定位置的元素值查询
db.mydb.find({"friends.1": "jack"})
11 根据数组的长度查询
db.mydb.find({"friends": {"$size": 3}})
12 指定查询返回的条数 limit
db.mydb.find().limit(10)
13 根据字段是否存在的查询
db.mydb.find({age: {"$exists": true}}) db.mydb.find({age: {"$exists": false}})
14 返回查询记录条数
db.mydb.find().count()
15 返回整个集合的记录条数
db.mydb.count()
16 限制返回记录的起点
db.mydb.find().skip(1).limit(1)
17 按某个字段升序排序
db.mydb.find().sort({age: 1})
18 按某个字段降序排序
db.mydb.find().sort({age: -1})