查找文档 - Collection.find
使用集合对象的find([selector],[options])方法查找集合中满足指定条件的文档。 下面的示例查找persons集合中所有名为Jason的文档:
var demo = new Mongo.Collection("persons");
var cursor = demo.find({name:"Jason"});
≡ 使用方法
find()方法的参数如下:
- selector - 指定文档选择符,当不指定该参数或传入空对象{}时,匹配所有文档
- options - 查找选项参数,是一个JSON对象,用来定制查找行为,比如排序、限制返回数量、选择字段等。
find()方法返回一个游标/Cursor对象,它仅仅登记了要进行的查询上下文,并不马上 物理地访问数据库以返回文档。
默认情况下,前端执行find()方法返回的Cursor对象是反应式对象,这意味着你可以 直接利用它来构造反应式UI。可以设置参数options的reactive属性为false,关闭 其反应式特性。
≡ 对查询结果进行排序
默认情况下,find()方法不对返回的结果文档进行排序,可以使用参数options的sort 属性对结果文档进行排序。下面的示例查询persons集合中的所有文档,并对返回结果按age字段 升序排列:
var demo = new Mongo.Collection("persons");
var cursor = demo.find({},{sort:{"age":1}});
升序对应数字1,降序对应数字-1
≡ 跳过指定数量的文档
当实现一个数据集的分页操作时,通常需要跳过指定数量的文档。设置参数options的 skip属性,可以达到这个目的。下面的示例查询persons集合中年龄大于20岁的文档,并 跳过起始部分的100个文档返回剩余结果:
var demo = new Mongo.Collection("persons");
var cursor = demo.find({age:{$gt:20}},{skip:100});
≡ 限定返回的文档数量
当实现一个数据集的分页操作时,也需要限定一次调用返回的文档数量。设置参数options 的limit属性,可以达到这个目的。下面的示例查询persons集合中年龄大于20岁的文档, 并设置最多返回10个文档:
var demo = new Mongo.Collection("persons");
var cursor = demo.find({age:{$gt:20}},{limit:10});
≡ 设定返回文档的结构
不是每次查询都需要返回文档的全部字段,可以使用参数options的fields参数选择 要在结果文档中包含的字段。下面的示例查询persons集合,仅返回每个文档的name和tel 字段:
var demo = new Mongo.Collection("persons");
var cursor = demo.find({},{fields:{name:1,tel:1}});
执行以下命令复位test应用、删除源文件
~/test$ meteor reset↵
~/test$ rm -rf \*↵
执行以下命令拷贝col-find示例代码、运行并查看运行结果:
~/test$ cp ~/demos/col-find/* .↵
~/test$ meteor↵
理解并修改col-find示例代码,通过练习掌握Collection的find方法在前端 和后端的使用差异。