猫鼬聚合$ match是否基于其他字段?

像素羊

我有一个这样的收藏:

[
  {
    "ticketNumber" : "00001",
    "version" : "0"
  },
  {
    "ticketNumber" : "00001",
    "version" : "1"
  },
  {
    "ticketNumber" : "00001",
    "version" : "2"
  },
  {
    "ticketNumber" : "00002",
    "version" : "0"
  },
  {
    "ticketNumber" : "00003",
    "version" : "0"
  },
  {
    "ticketNumber" : "00003",
    "version" : "1"
  }
]

该模型还有其他属性,我将在以后的聚合管道中使用。我首先需要进行某种过滤,以便它根据不同的ticketNumber和最新版本返回票证:

[
  {
    "ticketNumber" : "00001",
    "version" : "2"
  },
  {
    "ticketNumber" : "00002",
    "version" : "0"
  },
  {
    "ticketNumber" : "00003",
    "version" : "1"
  }
]

不知道这是否可行?

尼尔·伦恩

您可以使用聚合框架执行此操作$group使用$max您的“版本”上运算符,这是一个简单的操作

db.collection.aggregate([
    { "$group": {
        "_id": "$ticketNumber",
        "version":  { "$max": "$version" }
])

如果“版本”不是字符串,那会更好,但是它仍然有效,因为即使作为数字字符串,它仍然是词法。但是“ 10”在词法上不大于“ 2”。所以要当心。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章