【问题标题】:Node.js mongoose: how to use the .in and .sort methods of a query?Node.js mongoose:如何使用查询的 .in 和 .sort 方法?
【发布时间】: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) { });

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

谢谢!
克里斯

【问题讨论】:

    标签: mongodb node.js mongoose


    【解决方案1】:

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

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

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

    关于更复杂的嵌套关系的问题,如果你还没有,你可能想从优秀 MongoDB documentation开始,特别是Schema DesignAdvanced 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) { 
       });
      

      【讨论】:

        猜你喜欢
        • 2017-05-18
        • 2011-11-30
        • 2012-12-09
        • 1970-01-01
        • 2012-05-21
        • 1970-01-01
        • 2011-08-03
        • 1970-01-01
        • 2023-04-06
        相关资源
        最近更新 更多