小编Arj*_*Bal的帖子

Mongo聚合:添加从另一个字段派生的字段

我收集了以下形式的文档:

{
  name: "Michael",
  likes: [{ name: "reading", amount: 80}, {name: "eating", amount: 70}]
}
Run Code Online (Sandbox Code Playgroud)

我想向所有文档添加一个新字段,该字段将根据该人是否喜欢阅读而为 0/1。我必须检查 likes.name = "reading" 是否存在。我尝试在聚合管道中添加以下阶段来实现此目的:

$addFields: {
  likes_reading: {
    $cond: {
      if: {
        $eq: ["$likes.name", "reading"]
      },
      then: 1,
      else: 0
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然而, $eq 似乎并没有检查 likes 数组的“任何”元素是否具有所需的名称,这是我在将值与数组进行比较时在许多其他地方看到的行为。结果,所有 likes_reading 都设置为 0。我需要帮助正确设置这个新字段。

mongodb aggregation-framework

3
推荐指数
1
解决办法
2744
查看次数

标签 统计

aggregation-framework ×1

mongodb ×1