mongodb查询之find命令

来源:互联网 发布:深圳淘宝托管 编辑:程序博客网 时间:2024/06/05 17:58

我们首先新建一个集合 便于接下来的测试

$ 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
0 0
原创粉丝点击