【问题标题】:MongoDB: OrderBy for an object specific field within an arrayMongoDB:数组中对象特定字段的 OrderBy
【发布时间】:2020-07-04 01:20:51
【问题描述】:

查看此对象:

  "l": "222,41",
  "Rate": "000,01",
  "testable": [
    {
      "title": "lorem ipsum",
      "date:": "2020-04-19T00:00:00.000Z"
    },
    {
      "title": "lorem ipsum",
      "date:": "2020-04-20T00:00:00.000Z"
    },
    {
      "title": "lorem ipsum",
      "date:": "2020-04-29T00:00:00.000Z"
    }
  ]
}

我需要在 findOne 搜索中返回从最近到最近的日期。如何通过 Mongoose 做到这一点?

【问题讨论】:

    标签: arrays mongodb sorting mongoose


    【解决方案1】:

    findOne 只会返回一个元素。要获取最新的,你可以.sort({date: "desc"})

    如果你不是那个意思,当我想对一个想法上的 cmets 进行排序时,这就是我所做的。

     Idea.findOne({ _id: req.params.id }).populate({ path: "comments", options: { sort: { date: "desc" } } }).then(idea
    

    也许可以让你知道如何解决它。

    编辑:发现这也可能有帮助。https://www.tutorialspoint.com/how-to-sort-inner-array-in-mongodb

    【讨论】:

    • 提前感谢您的帮助,但在这种情况下填充没有效果,因为 testable 不是此主集合中引用的集合。 testable 是这个集合中的对象数组了解吗?这就是这些对象中没有 ObjectID 的原因。我的问题是如何在数组内的对象内的那些日期字段中制作这个 desc。
    • 啊,那我还真不知道。你可以得到你的模型并尝试通过为对象数组实现自己的排序方法来对其进行排序。查看此链接以供参考:sitepoint.com/sort-an-array-of-objects-in-javascript
    • 我也发现了这个。看看这个。 tutorialspoint.com/how-to-sort-inner-array-in-mongodb
    猜你喜欢
    • 2019-08-12
    • 2014-09-12
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2021-07-22
    • 2014-12-04
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多