MongoDB查询文档使用find()方法,find()方法以非结构化的方式来显示所有文档。
一、语法
db.集合名称.find(query,projection)
- quey:可选参数,使用查询操作符指定查询条件
- projection:可选参数,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可〔默认省略)。
如果你需要以易读的方式来读取数据,可以使用pretty()方法,语法格式如下:
db.集合名称.find().pretty()
注意:pretty()方法以格式化的方式来显示所有文档。
二、对比语法
如果你熟悉常规的SQL数据,通过下表可以更好的理解MongoDB的条件语句查询:
例如查询集合中name不等于“张三”的文档数据,则可以执行下述命令:
db.users.find({name:{"$ne":"张三"}});
三、And
db.集合名称.find({key1:value1,key2:value2,...}).pretty()
类似于SQL语句:where key1=value1 and key2=value2
四、OR
MongoDB OR条件语句使用了关键字$or,语法格式如下:
db.集合名称.find({$or:[{key1:value1},{key2:value2}]}
)
类似于SQL语句:where key1=value1 or key2=value2
例如查询集合中name等于“张三0”或者age等于27的文档数据,则可以执行下述命令:
db.users.find({$or:[{"name":"张三0"},{"age":27}]});
五、AND 和 OR 联合
类似于SQL语句:where age > 25 and ( name = '张三1' or name = '张三2')
db.users.find({"age":{$gt:25},$or:[{"name":"张三1"},{"name":"张三2"}]}).pretty();
六、数组中查询
测试数据:
db.users.insert({name:"张三3",age:28,likes:["散步","骑车","爬山"]});
执行数组查询:
db.users.find({"likes":"散步"}).pretty();
另外还可以使用 $size 按照数组长度查询:
七、模糊查询
类似于SQL语句:where name like '%张三%'
例如想查找集合中name值含有2的文档数据,则可以执行下述命令:
db.users.find({"name":/2/}).pretty();
注意:在mongoDB中使用正则表达式可以是实现近似模糊查询功能
八、排序
db.集合名称.find().sort({name:1,age:1});
其中1表示升序,-1表示降序
类似于SQL语句:order by name,age
九、分页
db.集合名称.find().sort({条件}).skip(start).limit(rows);
类似于SQL语句:limit start,rows
十、总条数
db.集合名称.count();
db.集合名称.find({"name":"张三"}).count();
类似于SQL语句:select count(id) from ...
十一、去重
db.集合名称.distinct('字段');
类似于SQL语句:select distinct(age) from ...
十二、指定返回字段
db.集合名称.find({条件},{name:1,age:1})
参数2:1表示返回,0表示不返回
注意1和0不能同时使用,因此不能写成下述这种格式:
db.users.find({},{name:1,age:0});