MongoDB中使用find来进行查询。查询就是返回一个集合中文档的子集,子集的范围从0个文档到整个集合。find的第一个参数指定了要返回哪些文档,这个参数是一个文档,用于指定查询条件。
为了便于理解,本文中所有的例子都会提供SQL语句的对比,必要时会与关系型数据库MySQL进行对比。
本文假设:集合(表)名为users
代码中涉及查询以“>”开头表示是一个查询语句,其他表示查询结果。
查询全部
空的查询会匹配集合的全部内容,下面查询会返回users集合中所有的内容。
> db.users.find()
对比SQL语句
> SELECT * FROM `users`;
指定查询条件
如果要指定查询条件
例如查询所有年龄为27岁的记录:
> db.users.find({"age":27})
对比SQL语句
> SELECT * FROM `users` WHERE `age` = 27;
如果要指定多个查询条件
例如查询所有年龄为27岁,并且 blog 为 https://www.qiansw.com 的记录:
> db.users.find({"age" : 27 , "blog" : "https://www.qiansw.com"})
对比SQL语句
> SELECT * FROM `users` WHERE `age` = 27 AND `blog` = "https://www.qiansw.com";
指定需要返回的键
上面介绍到的查询,是把文档中所有的键值都返回。但有时我们并不希望返回所有的键值,遇到这种情况我们可以通过find的第二个参数来指定想要的键。这样做既会节省传输的数据量,又能节省客户端解码文档的时间和内存消耗。
例如,我们只对用户的名字和blog地址感兴趣,可以使用下面查询返回这些键。
第二个参数中,可以理解为:1=true
0=false
。
> db.users.find({}, {"username" : 1 , "blog" : 1})
{
"_id" : ObjectId("57e8b143a4a6a5a106209e5f"),
"username" : "Internelp",
"blog" : "https://www.qiansw.com"
}
对比SQL语句
SELECT `username`, `blog` FROM `users`;
与MySQL
不同,默认情况下"_id"
这个键总是被返回,即使我们没有指定要返回这个键。
这个时候我们就需要用到设定"_id" = 0
来把它剔除掉。
> db.users.find({}, {"_id" = 0, "username" : 1 , "blog" : 1})
{
"username" : "Internelp",
"blog" : "https://www.qiansw.com"
}
这篇文章还没有人留言,快来抢沙发吧。