一、find
find 默认查询文档为{}
————————————————————————
> db.ysq.find() /* 1、返回集合ysq中的所以内容 */
> db.ysq.find({"name":"ysq"})/* 2、返回name为ysq的集合 */
> db.ysq.find({"name":"ysq","age":23})/* 3、多个键的查询条件组合 */
> db.ysq.find({"name":"ysq"})/* 2、返回name为ysq的集合 */
> db.ysq.find({"name":"ysq","age":23})/* 3、多个键的查询条件组合 */
>
> db.ysq.insert({"name":"ysq","age":23,"company":"bingo"});
> db.ysq.insert({"name":"qgw","age":30,"company":"bingo"});
> db.ysq.find({},{"name":1,"age":1})/* 4、指定返回的键,但_id总是被返回;另一种写法{"company":0}将得到同样的结果(可用此方式防止_id返回) */
{ "_id" : ObjectId("50f42936a8d5afd1a7c5eb04"),"name" :"ysq","age" :23 }
{ "_id" : ObjectId("50f42944a8d5afd1a7c5eb05"),"name" :"qgw","age" :30 }
> db.ysq.insert({"name":"ysq","age":23,"company":"bingo"});
> db.ysq.insert({"name":"qgw","age":30,"company":"bingo"});
> db.ysq.find({},{"name":1,"age":1})/* 4、指定返回的键,但_id总是被返回;另一种写法{"company":0}将得到同样的结果(可用此方式防止_id返回) */
{ "_id" : ObjectId("50f42936a8d5afd1a7c5eb04"),"name" :"ysq","age" :23 }
{ "_id" : ObjectId("50f42944a8d5afd1a7c5eb05"),"name" :"qgw","age" :30 }
————————————————————————
二、查询条件
"$lt" (<) 、"$lte"(<=)、"$gt"(>)、"$gte"(>=)、"$ne"(不等于)
————————————————————————
> db.ysq.find({"name":{"$ne":"arrayTest"}})
> db.ysq.find({"name":{"$ne":"array"}})
{ "_id" : ObjectId("50ee49b060d1d99460573b87"),"array" : ["a1","a2" ],"name":"arrayTest" }
>
> db.ysq.find({"name":{"$ne":"array"}})
{ "_id" : ObjectId("50ee49b060d1d99460573b87"),"array" : ["a1","a2" ],"name":"arrayTest" }
>
————————————————————————2.1 OR查询
————————————————————————
> db.ysq.find({"age":{"$in":[23,30]}})/* 1、in 查询 */
{ "_id" : ObjectId("50f42936a8d5afd1a7c5eb04"),"name" :"ysq","age" :23,"company" :"bingo" }
{ "_id" : ObjectId("50f42944a8d5afd1a7c5eb05"),"name" :"qgw","age" :30,"company" :"bingo" }
> db.ysq.find({"age":{"$nin":[23,30]}})/* 2、not in 查询 */
{ "_id" : ObjectId("50f42d1ea8d5afd1a7c5eb06"),"name" :"zyh","age" :31,"company" :"bingo" }
{ "_id" : ObjectId("50f42936a8d5afd1a7c5eb04"),"name" :"ysq","age" :23,"company" :"bingo" }
{ "_id" : ObjectId("50f42944a8d5afd1a7c5eb05"),"name" :"qgw","age" :30,"company" :"bingo" }
> db.ysq.find({"age":{"$nin":[23,30]}})/* 2、not in 查询 */
{ "_id" : ObjectId("50f42d1ea8d5afd1a7c5eb06"),"name" :"zyh","age" :31,"company" :"bingo" }
> db.ysq.find({"$or":[{"name":"ysq"},{"age":30}]})/*
3、or 查询 */
{ "_id" : ObjectId("50f42936a8d5afd1a7c5eb04"),"name" :"ysq","age" :23,"company" :"bingo" }
{ "_id" : ObjectId("50f42944a8d5afd1a7c5eb05"),"name" :"qgw","age" :30,"company" :"bingo" }
>
————————————————————————{ "_id" : ObjectId("50f42936a8d5afd1a7c5eb04"),"name" :"ysq","age" :23,"company" :"bingo" }
{ "_id" : ObjectId("50f42944a8d5afd1a7c5eb05"),"name" :"qgw","age" :30,"company" :"bingo" }
>
2.2 $not
"$not"是元条件句,可以用在任何其他条件之上。
三、特定于类型的查询
3.1 null
————————————————————————
> db.ysq.find()
{ "_id" : ObjectId("50f431cca8d5afd1a7c5eb07"),"y" : null }
{ "_id" : ObjectId("50f431d2a8d5afd1a7c5eb08"),"y" :1 }
{ "_id" : ObjectId("50f431d6a8d5afd1a7c5eb09"),"y" :2 }
>
> db.ysq.find({"y":null}) /* 1、匹配自身 */
{ "_id" : ObjectId("50f431cca8d5afd1a7c5eb07"),"y" : null }
>
> db.ysq.find({"z":null}) /* 2、匹配不存在指定键的文档 */
{ "_id" : ObjectId("50f431cca8d5afd1a7c5eb07"),"y" : null }
{ "_id" : ObjectId("50f431d2a8d5afd1a7c5eb08"),"y" :1 }
{ "_id" : ObjectId("50f431d6a8d5afd1a7c5eb09"),"y" :2 }
>
> db.ysq.find({"z":{"$in":[null],"$exists":true}})/* 3、匹配存在指定键但只为null的文档 */
>
{ "_id" : ObjectId("50f431cca8d5afd1a7c5eb07"),"y" : null }
{ "_id" : ObjectId("50f431d2a8d5afd1a7c5eb08"),"y" :1 }
{ "_id" : ObjectId("50f431d6a8d5afd1a7c5eb09"),"y" :2 }
>
> db.ysq.find({"y":null}) /* 1、匹配自身 */
{ "_id" : ObjectId("50f431cca8d5afd1a7c5eb07"),"y" : null }
>
> db.ysq.find({"z":null}) /* 2、匹配不存在指定键的文档 */
{ "_id" : ObjectId("50f431cca8d5afd1a7c5eb07"),"y" : null }
{ "_id" : ObjectId("50f431d2a8d5afd1a7c5eb08"),"y" :1 }
{ "_id" : ObjectId("50f431d6a8d5afd1a7c5eb09"),"y" :2 }
>
> db.ysq.find({"z":{"$in":[null],"$exists":true}})/* 3、匹配存在指定键但只为null的文档 */
>
————————————————————————
3.2 正则表达式
————————————————————————
> db.ysq.find({"name":/joe/i})/*1、执行忽略大小写的匹配*/
> db.ysq.find({"name":/joe?/i})/*2、匹配各种大小写组合形式的joe*/
> db.ysq.find({"name":/joe?/i})/*2、匹配各种大小写组合形式的joe*/
3.2 查询数组
通过多个元素匹配数组,使用$all
————————————————————————
> db.ysq.insert({"_id":1,"fruit":["apple","banana","peach"]})
> db.ysq.insert({"_id":2,"fruit":["apple","kumquat","orange"]})
> db.ysq.insert({"_id":3,"fruit":["cherry","banana","apple"]})
> db.ysq.find({fruit:{$all:["apple","banana"]}})
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : 3, "fruit" : [ "cherry", "banana", "apple" ] }
>
> db.ysq.insert({"_id":2,"fruit":["apple","kumquat","orange"]})
> db.ysq.insert({"_id":3,"fruit":["cherry","banana","apple"]})
> db.ysq.find({fruit:{$all:["apple","banana"]}})
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : 3, "fruit" : [ "cherry", "banana", "apple" ] }
>
数组指定位置的元素
————————————————————————
> db.ysq.find({"fruit.2":"peach"})
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
指定长度的数组
————————————————————————
> db.ysq.find({"fruit":{"$size":3}})
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : 2, "fruit" : [ "apple", "kumquat", "orange" ] }
{ "_id" : 3, "fruit" : [ "cherry", "banana", "apple" ] }
>
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : 2, "fruit" : [ "apple", "kumquat", "orange" ] }
{ "_id" : 3, "fruit" : [ "cherry", "banana", "apple" ] }
>
-----------------------未完待续 -----------------------
本文详细介绍了MongoDB中find函数的基本用法,包括查询所有内容、指定查询条件、使用特殊查询符号、特定类型的数据查询以及数组操作等关键点。
1433

被折叠的 条评论
为什么被折叠?



