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)?