Mongodb Mongo聚合组和匹配

Mongodb Mongo聚合组和匹配,mongodb,mongodb-query,Mongodb,Mongodb Query,是否可以按uuid分组以查找最大版本,然后筛选标志?我希望先找到版本3,然后看看它是否有标志“Y”。似乎在分组之前应用了过滤器,因此我得到了版本1 {"uuid" : 1, "version" : 1, "name" : "Bob", "flag" : "Y"} {"uuid" : 1, "version" : 2, "na

是否可以按uuid分组以查找最大版本,然后筛选标志?我希望先找到版本3,然后看看它是否有标志“Y”。似乎在分组之前应用了过滤器,因此我得到了版本1

 {"uuid" : 1, "version" : 1, "name" : "Bob", "flag" : "Y"}
 {"uuid" : 1, "version" : 2, "name" : "Bob", "flag" : "N"}
 {"uuid" : 1, "version" : 3, "name" : "Bob", "flag" : "N"}
提前谢谢

,如果我知道你的想法:

db.collection.aggregate({
  $group: {
    _id: "$uuid",
    docs: {
      $push: "$$ROOT"
    },
    "max_version": {
      "$max": "$version"
    }
  }
},
{
  $addFields: {
    docs: {
      "$filter": {
        "input": "$docs",
        "as": "d",
        "cond": {
          $eq: [
            "$$d.version",
            "$max_version"
          ],
          $eq: [
            "$$d.flag",
            "Y"
          ]
        }
      }
    }
  }
})
创意

  • $group by uuid并提取组上的最大
    version
  • 筛选文档数组中的
    max\u版本
    标志

那些
uuid
s实际上是相同的值吗?