文档数据库服务主要查询命令有:
- find():最基本的查询命令,基础语法是:db.collection.find(query, projection)。
- query:选择条件,类似于 WHERE 子句。
- projection:可选,使用来projection展示查询的字段,类似于SQL的SELECT。通过{ field: 1 }这样的语法可以指定要返回的字段,其中1表示要返回该字段,0表示不返回该字段 。
示例:
//查询age=20的数据
db.students.find({age: 20})
//查询age=20的数据,查询的结果只返回name,不返回_id
db.students.find({age: 20}, {name: 1, _id: 0})
- findOne():查找一条数据,会返回第一条匹配到的数据。语法:
db.collection.findOne(query, projection)
示例:
db.students.findOne({age: 20})
- limit() 和 skip():分页查询,limit() 指定数据条数,skip()跳过前几条:
db.students.find().limit(5)
db.students.find().limit(5).skip(10) // 跳过前10条,返回5条数据
- sort():排序。按照一个字段排序,orderly 参数指定排序方式,-1为降序,1为升序,默认升序:
db.students.find().sort({age:1})
db.students.find().sort({age: -1}) //降序
- count(): 统计结果数量:
db.collection.find(query).count()
也就是说, 文档数据库服务查询主要通过 find() 和查询条件的组合来实现,在find()中使用limit()、skip()、sort()、count()等方法进行查询控制。
还有一点需要留意,查询的结果,返回的是一个Cursor。Cursor使用完毕后要及时关闭,否则会产生内存堆积。