【问题标题】:Mongoose get latest document for every unique value in fieldMongoose 获取字段中每个唯一值的最新文档
【发布时间】:2021-11-15 02:54:41
【问题描述】:

我有一个像这样的 Mongoose 架构:

const mySchema = new mongoose.Schema(
  {
    _id: String,
    coin: String,
    closeTime: Number,
    volume: Number,
  }

我有一堆不同的硬币。是否可以根据 closeTime 获取我拥有的每个独特硬币的最新文档?

我们将不胜感激!谢谢。

【问题讨论】:

    标签: node.js typescript mongoose


    【解决方案1】:

    您可以使用聚合按最新/最新closeTime 排序,按coin 分组,然后获取该组的第一个文档:

    mySchema.aggregate([
      { $sort: { closeTime: -1 } },
      { $group: { _id: "$coin", latest: { $first: "$$ROOT" } } }
    ])
    

    这是用数字closeTime 以降序排序,获取第一个/最新文档并将其数据放入名为latest 的属性中。这应该会产生如下结果:

    [{
        "_id" : "2",
        "latest" : {
            "_id" : ObjectId("6149f106742bb30e2529c453"),
            "coin" : "foo",
            "closeTime" : 5,
            "volume" : 1
        }
    }
    {
        "_id" : "1",
        "latest" : {
            "_id" : ObjectId("6149f111742bb30e2529c45f"),
            "coin" : "bar",
            "closeTime" : 4,
            "volume" : 1
        }
    }]
    

    您可以进一步与其他aggregation stages 一起提取/投影底层硬币文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 2021-10-05
      • 2021-07-20
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多