gpt4 book ai didi

python - 在 mongoDB 聚合中的 $match 中使用 $cond

转载 作者:行者123 更新时间:2023-12-03 17:14:35 29 4
gpt4 key购买 nike

我尝试在聚合的其中一个阶段中使用 $match 内的 $cond ,如下所示:

{ "$match" : { 
"field1" : {
"$cond" : {
"if" : { "$eq" : [ "$id" , 1206]},
"then" : 0,
"else" : 1545001200
}
},
"field2" : value2 }}

但我收到了这个错误:
Error:
Assert: command failed: {
"ok" : 0,
"errmsg" : "unknown operator: $cond",
"code" : 2,
"codeName" : "BadValue"
} : aggregate failed

mongodb 版本是 3.4.4。
对这个问题有什么想法吗?

最佳答案

你只需要稍微改写逻辑。

{ $match: { $expr: {
$or: [
{ $and: [
{ $eq: [ "$id", 1206 ] },
{ $eq: [ "$field1", 0 ] }
]},
{ $and: [
{ $ne: [ "$id", 1206 ] },
{ $eq: [ "$field1", 1545001200 ] }
]},
],
}}}

从逻辑上讲,这两个语句是等效的:
  • 通过检查匹配文档 field1 == 0如果 id == 1206 , 否则通过检查 field1 == 1545001200 匹配文档
  • 如果( id == 1206field1 == 0 )或( id != 1206field1 == 1545001200 )匹配文档。
  • 关于python - 在 mongoDB 聚合中的 $match 中使用 $cond,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816011/

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