MongoDB基础教程系列--第四篇 MongoDB 查询文档
本文内容纲要:
-查询文档
-1、find()和findOne()
-2、条件操作符
-3、$type操作符
返回目录
查询文档
查询文档可以用find()方法查询全部文档,可以用findOne()查询第一个文档,当然还可以根据条件操作符和$type操作符查询满足条件的文档。
1、find()和findOne()
MongoDB用find()查询指定集合的全部文档
格式
db.COLLECTION_NAME.find()
范例
>db.user.find()
{"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),"name":"liruihuan","age":18,"sex":"man"}
{"_id":ObjectId("58e1d2f0bb1bbc3245fa754d"),"name":"user1","age":19,"sex":"man"}
{"_id":ObjectId("58e1d2f0bb1bbc3245fa754e"),"name":"user2","age":20,"sex":"woman"}
{"_id":ObjectId("58e1d2f0bb1bbc3245fa754f"),"name":"user3","age":19,"sex":"woman"}
>
如果想要格式化显示查询结果,我们需要用pretty()方法
格式如下
db.COLLECTION_NAME.find().pretty()
再次显示查询结果如下
>db.user.find().pretty()
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),
"name":"liruihuan",
"age":18,
"sex":"man"
}
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754d"),
"name":"user1",
"age":19,
"sex":"man"
}
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754e"),
"name":"user2",
"age":20,
"sex":"woman"
}
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754f"),
"name":"user3",
"age":19,
"sex":"woman"
}
>
除了find()方法,还有一个findOne()方法,它只会返回一个文档
>db.user.findOne()
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),
"name":"liruihuan",
"age":18,
"sex":"man"
}
2、条件操作符
如果你熟悉sql,那么下表可以更好的理解MongoDB条件查询
{<key>:<value>
}db.user.find({"name":"liruihuan"}).pretty()
wherename='liruihuan'
{<key>:{$lt:<value>}}
db.user.find({"age":{$lt:18}}).pretty()
whereage<18
{<key>:{$lte:<value>}}
db.user.find({"age":{$lte:18}}).pretty()
whereage<=18
{<key>:{$gt:<value>}}
db.user.find({"age":{$gt:18}}).pretty()
whereage>18
{<key>:{$gte:<value>}}
db.user.find({"age":{$gte:18}}).pretty()
whereage>=18
{<key>:{$ne:<value>}}
db.user.find({"age":{$ne:18}}).pretty()
whereage!=18
范例
1、查询user集合中name="liruihuan"的文档,代码如下
>db.user.find({"name":"liruihuan"}).pretty()
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),
"name":"liruihuan",
"age":18,
"sex":"man"
}
>
2、查询user集合中age>19的文档,代码如下
>db.user.find({"age":{$gt:19}}).pretty()
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754e"),
"name":"user2",
"age":20,
"sex":"woman"
}
>
为了更好的理解条件操作符,可以用英文解释一下
$gt--greaterthan
$gte--gtequal
$lt--lessthan
$lte--ltequal
$ne--notequal
MongoDB中的and条件
MongoDB的find()方法可以传入多个键(key),每个键(key)以逗号隔开,MongoDB会把这些键作为and条件,及常规SQL的AND条件。
格式
db.collection.find({key1:value1,key2:value2}).pretty()
范例
查询user集合中name值为liruihuan且age值为18的文档
>db.user.find({"name":"liruihuan","age":18}).pretty()
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),
"name":"liruihuan",
"age":18,
"sex":"man"
}
此实例类似于sql中where条件
WHEREname='liruihuan'ANDage=18
MongoDB中的or条件
MongoDB中or条件用$or关键字
格式
db.collection.find(
{
$or:[
{key1:value1},{key2:value2}
]
}
).pretty()
范例
查询user集合中name值为liruihuan或name值为user1的文档
>db.user.find({$or:[{"name":"liruihuan"},{"name":"user1"}]}).pretty()
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),
"name":"liruihuan",
"age":18,
"sex":"man"
}
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754d"),
"name":"user1",
"age":19,
"sex":"man"
}
>
此实例类似于sql中where条件
WHEREname='liruihuan'ORname="user1"
MongoDB中and和or结合使用
范例
查询user集合中age值大于17且(name值为liruihuan或name值为user1)的文档
>db.user.find({"age":{$gt:17},$or:[{"name":"liruihuan"},{"name":"user1"}]}).pretty()
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),
"name":"liruihuan",
"age":18,
"sex":"man"
}
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754d"),
"name":"user1",
"age":19,
"sex":"man"
}
>
此实例类似于sql中where条件
WHEREage>17(name='liruihuan'ORname="user1")
**注:**and条件是在大括号中,or条件是在中括号里的
3、$type操作符
基于BSON类型来查询集合中匹配的数据类型,并返回结果。
下表列举了可使用的数据类型
范例
查询user集合中name为String类型的文档
>db.user.find({"name":{$type:2}}).pretty()
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),
"name":"liruihuan",
"age":18,
"sex":"man"
}
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754d"),
"name":"user1",
"age":19,
"sex":"man"
}
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754e"),
"name":"user2",
"age":20,
"sex":"woman"
}
{
"_id":ObjectId("58e1d2f0bb1bbc3245fa754f"),
"name":"user3",
"age":19,
"sex":"woman"
}
>
业精于勤,荒于嬉;行成于思,毁于随。
如果你觉得这篇文章不错或者对你有所帮助,可以通过右侧【打赏】功能,给予博主一点点鼓励和支持
本文内容总结:查询文档,1、find()和findOne(),2、条件操作符,3、$type操作符,
原文链接:https://www.cnblogs.com/liruihuan/p/6665222.html