Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在聚合中使用查询作为表达式_Node.js_Mongodb_Mongodb Query - Fatal编程技术网

Node.js 在聚合中使用查询作为表达式

Node.js 在聚合中使用查询作为表达式,node.js,mongodb,mongodb-query,Node.js,Mongodb,Mongodb Query,我需要在聚合中使用普通筛选器查询作为$cond条件中的表达式 例如,使用此“条件”,将使用什么作为过滤器 '$and':[{'foo':'xxx'},{'bar':'zzz'}] 作为此“条件”,将在聚合中使用的等效形式 '$and'[{'$eq':['$foo','xxx']},{'$eq':['$bar':'zzz']}] 这样做的原因是我存储了某些过滤器,在某个时候我需要针对某些文档测试它们,但由于有多个过滤器,出于性能原因,我希望避免使用多个顺序查找查询,因此可以像这样使用 aggr

我需要在聚合中使用普通筛选器查询作为
$cond
条件中的表达式

例如,使用此“条件”,将使用什么作为过滤器

'$and':[{'foo':'xxx'},{'bar':'zzz'}]
作为此“条件”,将在聚合中使用的等效形式

'$and'[{'$eq':['$foo','xxx']},{'$eq':['$bar':'zzz']}]
这样做的原因是我存储了某些过滤器,在某个时候我需要针对某些文档测试它们,但由于有多个过滤器,出于性能原因,我希望避免使用多个顺序查找查询,因此可以像这样使用

aggregate([
    { 
        $match: { <match the document> } 
    },
    { 
        $project: {
            0: {$cond: [ <filter0>, true, false]},       
            1: {$cond: [ <filter1>, true, false]},
            2: {$cond: [ <filter2>, true, false]},
            ....
        }
    }
])
聚合([
{ 
$match:{}
},
{ 
$项目:{
0:{$cond:[,true,false]},
1:{$cond:[,true,false]},
2:{$cond:[,true,false]},
....
}
}
])
通过在
$cond
中使用query,我想要实现的是保证结果与在$match或find()中使用结果的一致性


所以我需要的基本上是“反向$expr”。

您可以使用
$facet
对同一数据运行多个查询

aggregate([
    { 
        $match: { <match the document> } 
    },
    { 
        $facet: {
            0: [{$match: {query0}}],       
            1: [{$match: {query1}}],
            2: [{$match: {query2}}],
            ....
        }
    }
])
聚合([
{ 
$match:{}
},
{ 
$facet:{
0:[{$match:{query0}}],
1:[{$match:{query1}}],
2:[{$match:{query2}}],
....
}
}
])

哇,我怎么能忽视它呢。我想我只是在寻找一些东西,作为逆EXPR操作符而不考虑其他的东西。