根据条件mongodb + node.js自定义查询

时间:2017-02-09 12:10:39

标签: node.js mongodb

我不知道我对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

中传递

1 个答案:

答案 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
})