我不知道我对mongodb的期望是否过高,但我在这里有一个问题。
是否可以根据布尔参数自定义查询?首先,我看了https://docs.mongodb.com/manual/reference/operator/aggregation/cond/。 但是没有找到一个条件是另一个参数的例子。
这里让我通过一个例子来澄清;
假设我有一个flag
参数。我想根据其值是true
还是false
来执行两个类似的查询。
文件就像;
{
"name" : "alex",
"age" : NumberInt(21)
}
{
"name" : "felix",
"age" : NumberInt(14)
}
为了能够查看条件,我可以将它们分成两个不同的查询;
if(flag){
db.collection.find({age: "18"})
}else{
db.collection.find({age: "21"})
}
我正在寻找类似的东西;
db.collection.aggregate([
{$cond: [flag,{$match: {age: "18"}} ,{$match: {age: "21"}}]}
])
但这引发了一个错误,这并不奇怪。
是否可以使用$cond
并执行两个不同的查询?参数是否可以在$cond
?
答案 0 :(得分:0)
您可以根据您的条件首先生成查询,然后执行该查询一次。
var query = {};
if(flag){
query.age = 18;
}else{
query.age = 21;
}
db.collection.find(query, function(err, result) {
if(err) {
// return error
}
console.log(result);
// return result
})