Node.js mongoose:如何使用查询的 .in 和 .sort 方法?

Posted

技术标签:

【中文标题】Node.js mongoose:如何使用查询的 .in 和 .sort 方法?【英文标题】:Node.js mongoose: how to use the .in and .sort methods of a query? 【发布时间】:2011-05-30 05:16:40 【问题描述】:

我正试图围绕 mongoose 展开思考,但我很难找到任何类型的文档来了解一些更高级的查询选项,特别是 .in 和 .sort 方法。例如按年龄排序的语法是什么?

db.model("Person").find().sort(???).all(function(people) );

然后,假设我想根据流派查找电影,其中电影可以有多种流派(在本例中为字符串数组)。据推测,我会使用 .in 函数来完成此操作,但我不确定语法是什么。或者也许我根本不需要使用 .in 方法......?不管怎样,我迷路了。

db.model("Movie").find().in(???).all(function(movies) );

有人有什么想法吗?或者更好的是,提供一些综合文档的链接?

谢谢! 克里斯

【问题讨论】:

【参考方案1】:

是的,mongoose 文档在其中一些方面存在滞后,不幸的是,解决方案不是很直观(当使用仍在快速开发中的东西并且 API 正在升级到 1.0 版本时,会附带领土)

同时,这将满足您在排序方面的需求:

db.model("Person").find().sort([['age','ascending']]).all(function(people)  );

关于更复杂的嵌套关系的问题,如果你还没有,你可能想从优秀 MongoDB documentation开始,特别是Schema Design,Advanced Queries上的文章和Dot Notation (reaching into objects)。了解 MongoDB 的里里外外应该会让浏览 mongoose 的晦涩部分变得轻而易举。

这是一个使用 $in 按类型查找电影的示例:

db.model("Movie").find( 'genres':  $in: ['Horror','Comedy']  ).all(function(movies)  );

【讨论】:

【参考方案2】:

丹尼尔的回答对我不起作用。我相信 api 自 1.0.14 以来发生了变化(http://groups.google.com/group/mongoose-orm/browse_thread/thread/cc77914021940e73/34fc6f45938a2242?lnk=raot)

这对我有用:

db.model("Person")
  .find()
  .sort('age', 1)
  .execFind(function(err, people)  
 );

【讨论】:

以上是关于Node.js mongoose:如何使用查询的 .in 和 .sort 方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Node.js 中通过 Mongoose 使用 dot(.) 进行查询以及如何添加空数组

如何从 Node.js / Express 应用程序的 Mongoose 预挂钩中查询?

如何从 Node.js / Express 应用程序的 Mongoose 预挂钩中查询?

如何在 MongoDB 中对聚合查询结果进行分页并获得总文档数(Node.js + Mongoose)?

使用 Node.js 和 Mongoose 将查询结果保存到模型/模式的属性

存储 mongoose (node.js orm) 查询结果