三、MongoDB 查询(待续)

本文详细介绍了MongoDB中find函数的基本用法,包括查询所有内容、指定查询条件、使用特殊查询符号、特定类型的数据查询以及数组操作等关键点。
一、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.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" }
>
————————————————————————
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" }
> 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" }
>
————————————————————————
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的文档 */
>
————————————————————————
3.2 正则表达式
————————————————————————
> db.ysq.find({"name":/joe/i})/*1、执行忽略大小写的匹配*/
> 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.find({"fruit.2":"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" ] }
>
————————————————————————
 


 
 -----------------------未完待续 -----------------------
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值