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操作符而不考虑其他的东西。