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

Mongodb Mongo聚合:添加从另一个字段派生的字段,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我收集了以下形式的文件: { name: "Michael", likes: [{ name: "reading", amount: 80}, {name: "eating", amount: 70}] } 我想在所有文档中添加一个新字段,该字段将为0/1,具体取决于此人是否喜欢阅读。我必须检查是否有喜欢的人。name=“reading”。 我尝试在聚合管道中添加以下阶段以实现此目的: $addFields: { like

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

{
  name: "Michael",
  likes: [{ name: "reading", amount: 80}, {name: "eating", amount: 70}]
}
我想在所有文档中添加一个新字段,该字段将为0/1,具体取决于此人是否喜欢阅读。我必须检查是否有喜欢的人。name=“reading”。 我尝试在聚合管道中添加以下阶段以实现此目的:

$addFields: {
  likes_reading: {
    $cond: {
      if: {
        $eq: ["$likes.name", "reading"]
      },
      then: 1,
      else: 0
    }
  }
}

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

由于
likes
是一个数组,您必须使用运算符,因此请尝试以下操作:

{
$addFields:{
喜欢阅读:{
$cond:{
if:{$in:[“reading”,“$likes.name”]},
然后:1,,
其他:0
}
}
}
}

{
$addFields:{
喜欢阅读:{
$cond:[{$in:[“reading”,“$likes.name”]},1,0]
}
}
}

我感觉$eq在这里不起作用,但不知道用什么来代替它。我使用$in将文档的字段与需要搜索的值数组相匹配。这似乎是相反的。谢谢你的帮助!