Meteor开发平台入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

查找文档 - 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。可以设置参数optionsreactive属性为false,关闭 其反应式特性。

≡ 对查询结果进行排序

默认情况下,find()方法不对返回的结果文档进行排序,可以使用参数optionssort 属性对结果文档进行排序。下面的示例查询persons集合中的所有文档,并对返回结果按age字段 升序排列:

var demo = new Mongo.Collection("persons");
var cursor = demo.find({},{sort:{"age":1}});

升序对应数字1,降序对应数字-1

≡ 跳过指定数量的文档

当实现一个数据集的分页操作时,通常需要跳过指定数量的文档。设置参数optionsskip属性,可以达到这个目的。下面的示例查询persons集合中年龄大于20岁的文档,并 跳过起始部分的100个文档返回剩余结果:

var demo = new Mongo.Collection("persons");
var cursor = demo.find({age:{$gt:20}},{skip:100});

≡ 限定返回的文档数量

当实现一个数据集的分页操作时,也需要限定一次调用返回的文档数量。设置参数optionslimit属性,可以达到这个目的。下面的示例查询persons集合中年龄大于20岁的文档, 并设置最多返回10个文档:

var demo = new Mongo.Collection("persons");
var cursor = demo.find({age:{$gt:20}},{limit:10});

≡ 设定返回文档的结构

不是每次查询都需要返回文档的全部字段,可以使用参数optionsfields参数选择 要在结果文档中包含的字段。下面的示例查询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方法在前端 和后端的使用差异。