【问题标题】:Mongoose - How to retrieve an array of objects from each document in collection?Mongoose - 如何从集合中的每个文档中检索对象数组?
【发布时间】:2019-02-07 23:52:49
【问题描述】:

我的集合中的每个文档看起来都像这样(JSON):

{
name: "Roger",
matches: [
    {
        opponent: "Rafael Nadal",
        match_date: 1494536400000
    },
    {
        opponent: "Nick Kyrgyos",
        match_date: 1494557400000
    }
  ]
}

我想提取每个玩家的所有比赛,并使用 Mongoose 按match_date 对它们进行排序,但我不知道如何。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: arrays json mongodb mongoose


    【解决方案1】:

    你可以试试下面的聚合

    db.collection.aggregate([
      { "$unwind": "$matches" },
      { "$sort": { "matches.match_date": 1 }},
      { "$group": {
        "_id": "$_id",
        "matches": { "$push": "$matches" }
      }},
      { "$limit": 20 },
      { "$project": { "matches": 1, "numberOfMatches": { "$size": "$matches" } }}
    ])
    

    【讨论】:

    • 我收到以下错误:Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true.allowDiskUse(true) 修复了它。我也想使用分页(limit()),但只有在排序成功完成之后。你知不知道怎么?谢谢!
    • 您可以在$project 阶段之前使用$limit...更新了答案
    • 有没有办法“不分组”结果?我想要所有网球运动员的所有网球比赛
    • 我听不懂...你能用示例输出问一个新问题吗...我最好在新答案中解释一下
    猜你喜欢
    • 2016-03-27
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    相关资源
    最近更新 更多