我收集了以下形式的文档:
{
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。我需要帮助正确设置这个新字段。