gpt4 book ai didi

mongodb - Mongo 聚合 : add field derived from another field

转载 作者:行者123 更新时间:2023-12-05 02:01:17 25 4
gpt4 key购买 nike

我在集合中有以下形式的文档:

{
name: "Michael",
likes: [{ name: "reading", amount: 80}, {name: "eating", amount: 70}]
}

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

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

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

最佳答案

由于 likes 是一个数组,您必须使用 $in运算符(operator)所以试试这个:

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

或者

{
$addFields: {
likes_reading: {
$cond: [{ $in: ["reading", "$likes.name"] }, 1, 0]
}
}
}

关于mongodb - Mongo 聚合 : add field derived from another field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66706048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com