MongoDB数据查询使用find函数,其功能与SQL中的select函数相同,可提供与关系型数据库类似的许多功能,包含映射、排序等。
find函数语法
>db.COLLECTION_NAME.find(query,fields,limit,skip)
find() 方法以非结构化的方式来显示所有文档。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.COLLECTION_NAME.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
参数说明:
- query:指明查询条件,相当于SQL中的where语句
- fields:用于字段映射,指定是否返回该字段,0代表不返回,1代表返回
- limit:限制查询结果集的文档数量,指定查询返回结果数量的上限
- skip:跳过一定数据量的结果,设置第一条返回文档的偏移量
- MongoDB不支持多集合间的连接查询,find函数一次查询只能针对一个集合
- find参数为空或者查询条件为空文档时,会返回集合中的所有文档
- 除了将limit和skip作为find函数的参数外,还可以单独使用limit和skip函数来修饰查询结果
- 返回的查询结果集默认情况下是无序的,如果需要对结果进行排序,可以使用sort函数
- db.collection.findOne()只会返回第一条数据
- 当查询的集合文档数量很大时,为了加快数据的查询速度可以创建索引
- 除了使用find函数实现基本查询外,MongoDB还提供了聚合框架,用于复杂查询
find函数实例
编写js脚本
// 连接数据库
var db = connect("localhost:27017/test");
// 得到待操作的数据库
//var db = dbService.getSiblingDB("test");
// 如果col集合存在则删除
db.col.drop();
//创建bulk对象用于批量插入
var bulk = db.col.initializeUnorderedBulkOp();
// 测试数据
var doc1 = {
name:"joe",
age:20
}
bulk.insert(doc1);
var doc2 = {
name:"joe",
age:31
}
bulk.insert(doc2);
var doc3 = {
name:"jack",
age:21
}
bulk.insert(doc3);
var doc4 = {
name:"John",
age:null
}
bulk.insert(doc4);
//执行插入操作
bulk.execute();
print("========find - 基本使用=======");
/*
db.集合名.find( query , fields , limit , skip)
*/
var cursor = db.col.find(
{}, //查询条件
{ _id:0,age:1}, //字段映射
2, //返回结果条数
1)
.sort({age:1}); //跳过文档条数 结果按照年龄升序排列
printjson(cursor.toArray());
print("====下面使用方法,效果一样===");
var cursor = db.col.find(
{}, //查询条件
{ _id:0,age:1} //字段映射
).limit(2).skip(1).sort({age:1})
printjson(cursor.toArray())
执行脚本
mongo --quiet find.js
========find - 基本使用=======
[ { "age" : 20 }, { "age" : 21 } ]
====下面使用方法,效果一样===
[ { "age" : 20 }, { "age" : 21 } ]