gpt4 book ai didi

mongodb - 如何在没有 else 表达式的情况下在 mongoDB 中使用 $cond?

转载 作者:行者123 更新时间:2023-12-05 09:13:57 26 4
gpt4 key购买 nike

如果 site!= 'undefined',我想将 $site 的值添加到变量中,否则我必须跳过该文档并转到下一个。

我用过

{$addToSet: { $cond: { if: { $ne: [ "$site", 'undefined' ] }, then: "$site"}}}

但是它返回“$cond 缺少‘else’参数”

如果我添加一个 else 语句

1) {$addToSet: { $cond: { if: { $ne: [ "$site", 'undefined' ] }, then: "$site", else: {} }}}

它将值返回给addset {Object Object}

2) {$addToSet: { $cond: { if: { $ne: [ "$site", 'undefined' ] }, then: "$site", else: null }}}

它返回 null 到像 ["sample1", "sample2", ] 这样的集合

3) {$addToSet: { $cond: { if: { $ne: [ "$site", 'undefined' ] }, then: "$site", else: "" }}}

它向 ["sample1", "sample2", ""] 这样的集合返回 null

如果不满足条件,我不想将任何东西添加到集合中。

最佳答案

从 MongoDB 3.6 开始,您可以使用 $$REMOVE变量作为 $cond 运算符的 ELSE 参数,以防止在条件失败时将任何内容添加到集合中。

See here来自 Mongo Docs 的示例。

对于您的情况,我们可以完成它,

{
$group: {
//_id: <group-by-expression>
// other fields (if any)..
sites: {
$addToSet: {
$cond: {
if: { $ne: ["$site", 'undefined'] },
then: "$site",
else: "$$REMOVE"
}
}
}
}
}

{
$group: {
//_id: <group-by-expression>
// other fields (if any)..
sites: {
$addToSet: {
$cond: [
{ $ne: ["$site", 'undefined'] },
"$site",
"$$REMOVE"
]
}
}
}
}

关于mongodb - 如何在没有 else 表达式的情况下在 mongoDB 中使用 $cond?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55178822/

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