我们首先新建一个集合 便于接下来的测试
$ for(var i=0;i<100;i++) db.user.insert({name:"xandy-"+i,age:i,sex:i%2==0?"man":"women"})
指定返回的健查询
只查询出只包含name健的数据
$ db.user.find({},{name:true})
{ "_id" : ObjectId("5846b1d210ea2f9722021f2c"), "name" : "xandy-0" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2d"), "name" : "xandy-1" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2e"), "name" : "xandy-2" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2f"), "name" : "xandy-3" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f30"), "name" : "xandy-4" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f31"), "name" : "xandy-5" }
.....
若是希望在查询中不包含age这个键的数据
db.user.find({},{age:false})
{ "_id" : ObjectId("5846b1d210ea2f9722021f2c"), "name" : "xandy-0", "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2d"), "name" : "xandy-1", "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2e"), "name" : "xandy-2", "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2f"), "name" : "xandy-3", "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f30"), "name" : "xandy-4", "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f31"), "name" : "xandy-5", "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f32"), "name" : "xandy-6", "sex" : "man" }
.....
条件查询
“
lt""
lte” “
gt""
gte” 就是全部的比较操作符 对应”<” “<=” “>” “>=”
我们找出age小于等于60又大于等于50的数据
$ db.user.find({age:{"$lte":60,"$gte":50}})
{ "_id" : ObjectId("5846b1d210ea2f9722021f5e"), "name" : "xandy-50", "age" : 50, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f5f"), "name" : "xandy-51", "age" : 51, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f60"), "name" : "xandy-52", "age" : 52, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f61"), "name" : "xandy-53", "age" : 53, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f62"), "name" : "xandy-54", "age" : 54, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f63"), "name" : "xandy-55", "age" : 55, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f64"), "name" : "xandy-56", "age" : 56, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f65"), "name" : "xandy-57", "age" : 57, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f66"), "name" : "xandy-58", "age" : 58, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f67"), "name" : "xandy-59", "age" : 59, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f68"), "name" : "xandy-60", "age" : 60, "sex" : "man" }
不等于操作符“$ne”
我们找出age小于等于60又大于等于50并且“name”不包含”xandy-55”的数据
$ db.user.find({age:{"$lte":60,"$gte":50},name:{"$ne":"xandy-55"}})
{ "_id" : ObjectId("5846b1d210ea2f9722021f5e"), "name" : "xandy-50", "age" : 50, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f5f"), "name" : "xandy-51", "age" : 51, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f60"), "name" : "xandy-52", "age" : 52, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f61"), "name" : "xandy-53", "age" : 53, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f62"), "name" : "xandy-54", "age" : 54, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f64"), "name" : "xandy-56", "age" : 56, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f65"), "name" : "xandy-57", "age" : 57, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f66"), "name" : "xandy-58", "age" : 58, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f67"), "name" : "xandy-59", "age" : 59, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f68"), "name" : "xandy-60", "age" : 60, "sex" : "man" }
OR查询
“$in” 可以用来查询一个键的多个值
我们查询 age是55 69 1 的数据
$ db.user.find({age:{"$in":[55,56,1]}})
{ "_id" : ObjectId("5846b1d210ea2f9722021f2d"), "name" : "xandy-1", "age" : 1, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f63"), "name" : "xandy-55", "age" : 55, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f64"), "name" : "xandy-56", "age" : 56, "sex" : "man" }
“$or”可以用来查询多个键的多个数据
我们查询age是55,58,61 或者name是”xandy-1” “xandy-99”的数据
$ db.user.find({"$or":[{age:{"$in":[55,58,61]}},{name:{"$in":["xandy-1","xandy-99"]}}]})
{ "_id" : ObjectId("5846b1d210ea2f9722021f2d"), "name" : "xandy-1", "age" : 1, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f63"), "name" : "xandy-55", "age" : 55, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f66"), "name" : "xandy-58", "age" : 58, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f69"), "name" : "xandy-61", "age" : 61, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f8f"), "name" : "xandy-99", "age" : 99, "sex" : "women" }
“$mod”取模 如果当前值除以第一个给定值 余数等于第二个给定值 就符合条件
我们查找取余2等于0的数据
$ db.user.find({age:{"$mod":[2,0]}})
{ "_id" : ObjectId("5846b1d210ea2f9722021f2c"), "name" : "xandy-0", "age" : 0, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2e"), "name" : "xandy-2", "age" : 2, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f30"), "name" : "xandy-4", "age" : 4, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f32"), "name" : "xandy-6", "age" : 6, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f34"), "name" : "xandy-8", "age" : 8, "sex" : "man" }
......
“$not”不符合条件的数据
我们查找取余2等于0不符合的数据
$ db.user.find({age:{"$not":{"$mod":[2,0]}}})
{ "_id" : ObjectId("5846b1d210ea2f9722021f2d"), "name" : "xandy-1", "age" : 1, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2f"), "name" : "xandy-3", "age" : 3, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f31"), "name" : "xandy-5", "age" : 5, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f33"), "name" : "xandy-7", "age" : 7, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f35"), "name" : "xandy-9", "age" : 9, "sex" : "women" }
......
正则表达式查询
我们查询name包含0的数据
$ db.user.find({name:/0/})
{ "_id" : ObjectId("5846b1d210ea2f9722021f2c"), "name" : "xandy-0", "age" : 0, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f36"), "name" : "xandy-10", "age" : 10, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f40"), "name" : "xandy-20", "age" : 20, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f4a"), "name" : "xandy-30", "age" : 30, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f54"), "name" : "xandy-40", "age" : 40, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f5e"), "name" : "xandy-50", "age" : 50, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f68"), "name" : "xandy-60", "age" : 60, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f72"), "name" : "xandy-70", "age" : 70, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f7c"), "name" : "xandy-80", "age" : 80, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f86"), "name" : "xandy-90", "age" : 90, "sex" : "man" }
数组查询
我们先穿件一个food集合 插入一条带有数组的数据
$ db.food.insert({fruit:["apple","pear","banana",'orange']})
$ db.food.insert({fruit:["apple","pear","banana"]})
$ db.food.insert({fruit:["apple","pear","orange"]})
我们用数组中一个元素就可以找到该条数据
$ db.food.find()
{ "_id" : ObjectId("5846d2a8472eeea0031f3f67"), "fruit" : [ "apple", "pear", "banana", "orange" ] }
{ "_id" : ObjectId("5846d466472eeea0031f3f68"), "fruit" : [ "apple", "pear", "banana" ] }
{ "_id" : ObjectId("5846d473472eeea0031f3f69"), "fruit" : [ "apple", "pear", "orange" ] }
“$al”通过多个元素匹配数据
我们找出元素里既有apple又有orange的数据
$ db.food.find({fruit:{"$all":["apple","orange"]}})
{ "_id" : ObjectId("5846d2a8472eeea0031f3f67"), "fruit" : [ "apple", "pear", "banana", "orange" ] }
{ "_id" : ObjectId("5846d473472eeea0031f3f69"), "fruit" : [ "apple", "pear", "orange" ] }
“$size”通过指定数组元素的个数来查询数据
找出数组元素个数为3的数据
$ db.food.find({fruit:{"$size":3}})
{ "_id" : ObjectId("5846d466472eeea0031f3f68"), "fruit" : [ "apple", "pear", "banana" ] }
{ "_id" : ObjectId("5846d473472eeea0031f3f69"), "fruit" : [ "apple", "pear", "orange" ] }
findOne()
该语句只能返回一条数据
查找fruit的前2个元素
$ db.food.findOne({fruit:"orange"},{fruit:{"$slice":2}})
{
"_id" : ObjectId("5846d2a8472eeea0031f3f67"),
"fruit" : [
"apple",
"pear"
]
}
查找fruit的后两个元素
$ db.food.findOne({fruit:"orange"},{fruit:{"$slice":-2}})
{
"_id" : ObjectId("5846d2a8472eeea0031f3f67"),
"fruit" : [
"banana",
"orange"
]
}
查找
fruit中1到3个元素
$ db.food.findOne({fruit:"orange"},{fruit:{"$slice":[1,3]}})
{
"_id" : ObjectId("5846d2a8472eeea0031f3f67"),
"fruit" : [
"pear",
"banana",
"orange"
]
}
limit()限制查询结果的数量
$ db.user.find().limit(5)
{ "_id" : ObjectId("5846b1d210ea2f9722021f2c"), "name" : "xandy-0", "age" : 0, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2d"), "name" : "xandy-1", "age" : 1, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2e"), "name" : "xandy-2", "age" : 2, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f2f"), "name" : "xandy-3", "age" : 3, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f30"), "name" : "xandy-4", "age" : 4, "sex" : "man" }
skip()跳过指定查询条数
$ db.user.find().skip(10).limit(5)
{ "_id" : ObjectId("5846b1d210ea2f9722021f36"), "name" : "xandy-10", "age" : 10, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f37"), "name" : "xandy-11", "age" : 11, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f38"), "name" : "xandy-12", "age" : 12, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f39"), "name" : "xandy-13", "age" : 13, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f3a"), "name" : "xandy-14", "age" : 14, "sex" : "man" }
sort()对结果进行排序 1代表正向 -1代表反向
$ db.user.find().limit(5).sort({age:-1})
{ "_id" : ObjectId("5846b1d210ea2f9722021f8f"), "name" : "xandy-99", "age" : 99, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f8e"), "name" : "xandy-98", "age" : 98, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f8d"), "name" : "xandy-97", "age" : 97, "sex" : "women" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f8c"), "name" : "xandy-96", "age" : 96, "sex" : "man" }
{ "_id" : ObjectId("5846b1d210ea2f9722021f8b"), "name" : "xandy-95", "age" : 95, "sex" : "women" }
count()对查询结果进行计数
$ db.user.find({age:{"$mod":[2,0]}}).count()
50