MongoDB查询

MongoDB查询

实验过程

1.基本查询

查询一条数据

> db.Student.findOne()                               
{                                                    
        "_id" : ObjectId("5a2495381d7f7d899ec20378"),
        "name" : "Lin",                              
        "age" : 20,                                  
        "sex" : "male"                               
}                                                    

多条件查询

> db.Student.find({name:"Lin",age:20})                                               
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }   

返回指定的文档键值对(相当于不返回其他键值对)

> db.Student.find({},{name:"Lin",age:20})                                         
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20 }      

指定不返回的文档键值对(除了name以外的键值对都返回了)

> db.Student.find({},{name:0})
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "age" : 20, "sex" : "male" }
2.查询条件

MongoDB提供了一组比较操作符:$lt/$lte/$gt/$gte/$ne,依次等价于

> db.Student.find({"age":{"$gte":18, "$lte":40}})
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }

返回name!=Lin

db.Student.find({"name":{"$ne":"Lin"}})

in:在范围内查找

> db.Student.find({"name":{"$in":["Lin","lin1"]}})
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }

和SQL不同的是,MongoDB的in list中的数据可以是不同类型

> db.Student.find({"name":{"$in":["Lin",123]}})
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }

nin等同于SQL中的not in,同时也是$in的取反

> db.Student.find({"name":{"$in":["Lin1",123]}})
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }

这里写图片描述

3.null数据类型的查询

在进行值为null数据的查询时,所有值为null,以及不包含指定键的文档均会被检索出来

> db.Student.find({"x":null})
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }
4.正则查询

perl规则

> db.Student.find()                                                                             
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }    
{ "_id" : ObjectId("5a24a9e61d7f7d899ec20379"), "name" : "Tom", "age" : 18, "sex" : "male" }    
{ "_id" : ObjectId("5a24a9fd1d7f7d899ec2037a"), "name" : "Linda", "age" : 16, "sex" : "female" }
> db.Student.find({"name":/Lin?/i})                                                             
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }    
{ "_id" : ObjectId("5a24a9fd1d7f7d899ec2037a"), "name" : "Linda", "age" : 16, "sex" : "female" }

这里写图片描述

5.数组数据查询

插入数组元素,并且查询

> db.Student.insert({fruit:["apple","orange"]})
WriteResult({ "nInserted" : 1 })
> db.Student.insert({fruit:["paneapple","banana"]})
WriteResult({ "nInserted" : 1 })
> db.Student.insert({fruit:["blackpaneapple","banana"]})
WriteResult({ "nInserted" : 1 })
> db.Student.insert({fruit:["blackpaneapple","cherry"]})
WriteResult({ "nInserted" : 1 })
> db.Student.find()
{ "_id" : ObjectId("5a2495381d7f7d899ec20378"), "name" : "Lin", "age" : 20, "sex" : "male" }
{ "_id" : ObjectId("5a24a9e61d7f7d899ec20379"), "name" : "Tom", "age" : 18, "sex" : "male" }
{ "_id" : ObjectId("5a24a9fd1d7f7d899ec2037a"), "name" : "Linda", "age" : 16, "sex" : "female" }
{ "_id" : ObjectId("5a24ad401d7f7d899ec2037b"), "fruit" : [ "apple", "orange" ] }
{ "_id" : ObjectId("5a24ad521d7f7d899ec2037c"), "fruit" : [ "paneapple", "banana" ] }
{ "_id" : ObjectId("5a24ad601d7f7d899ec2037d"), "fruit" : [ "blackpaneapple", "banana" ] }
{ "_id" : ObjectId("5a24ad6b1d7f7d899ec2037e"), "fruit" : [ "blackpaneapple", "cherry" ] }
> db.Student.find({"fruit":"apple"})
{ "_id" : ObjectId("5a24ad401d7f7d899ec2037b"), "fruit" : [ "apple", "orange" ] }

检索数组中需要包含多个元素的情况,这里使用$all

> db.Student.find({"fruit": {"$all": ["orange","apple"]}})
{ "_id" : ObjectId("5a24ad401d7f7d899ec2037b"), "fruit" : [ "apple", "orange" ] }

匹配数组中指定下标元素的值

> db.Student.find({"fruit.1":"cherry"})
{ "_id" : ObjectId("5a24ad6b1d7f7d899ec2037e"), "fruit" : [ "blackpaneapple", "cherry" ] }

通过$size获取数组的长度,但是$size不能和比较操作符联合使用

> db.Student.find({"fruit": {$size : 2}})                                                  
{ "_id" : ObjectId("5a24ad401d7f7d899ec2037b"), "fruit" : [ "apple", "orange" ] }          
{ "_id" : ObjectId("5a24ad521d7f7d899ec2037c"), "fruit" : [ "paneapple", "banana" ] }      
{ "_id" : ObjectId("5a24ad601d7f7d899ec2037d"), "fruit" : [ "blackpaneapple", "banana" ] } 
{ "_id" : ObjectId("5a24ad6b1d7f7d899ec2037e"), "fruit" : [ "blackpaneapple", "cherry" ] } 

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值