我想在$ project下一起使用$ reverseArray和$ cond。 但$ cond下的条件不起作用。我有一个对象数组,我想首先反转,然后应用一些条件。
示例数据库:
{
_id : 1,
arr:[
{name : 'a',cf:0 , num : 1},
{name : 'b',cf:1, , num : 1},
{name : 'b',cf:0, , num : 2},
{name : 'a',cf:1, , num : 2},
{name : 'a',cf:0, , num : 3},
{name : 'b',cf:1, , num : 3},
{name : 'a',cf:1, , num : 4}
]
}
我正在尝试使用查询:
[
{
$project:{reverseArr : {$reverseArray:arr},
query1:{$cond :
{
$if : {
$and: [
{$eq: ['$reverseArr.name', 'a']},
{$eq: ['$reverseArr.cf', 0]}
]
},then: 1,else: 0
}}
}
}
]
因此,通过使用上面的查询,我希望从数组{name : 'a',cf:0, , num : 3}
的末尾获得第3个。
但$cond
与所需对象不匹配。我在$unwind
之后尝试使用$project
,但这对我没有帮助。
我在这里做错了什么? 我怎样才能实现我想做的事情? 任何相关问题也会有所帮助。
答案 0 :(得分:1)
如果您需要使用$reverseArray
,请尝试:
[
{ $project:{reverseArr : {$reverseArray:arr} },
{ $unwind : “reverseArr” },
{ $project:{ query1:{$cond :
{
$if : {
$and: [
{$eq: ['$reverseArr.name', 'a']},
{$eq: ['$reverseArr.cf', 0]}
]
},then: 1,else: 0
}}
}
]