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将文档的字段与需要搜索的值数组相匹配。这似乎是相反的。谢谢你的帮助!