2015-06-26 37 views
0

我正在用流星和JavaScript构建一个webapp,并且想要根据属性过滤JSON对象。我可以运行fullList.find()以获取所有内容,并且fullList.find({'Color': 'r'})仅获取“红色”项目,但是我想返回所有“红色”或“蓝色”项目,但无法找出正确的语法。我尝试过各种组合,例如fullList.find({'Color': 'r' || 'b'})fullList.find({'Color': ('r' || 'b')}),但它不是完全运行,就是返回只有一个属性的项目,而不是返回项目。我觉得这应该是一个简单的解决方案,我只是不太熟悉JavaScript。。MongoDB中的.find()有多个条件

这是我的(相关)完整性代码。仅在以下两个条件为真(与一个或三个)的逻辑失败:

indicadores: function(){ 
     if (Session.get("displayUrgencies")){ 
      if (Session.get("displayInsuff")){ 
       if (Session.get("displayStrengths")){ 
        console.log("display all"); 
        return fullList.find(); 
       } 
       else { 
        console.log("display urgencies and insufficiencies"); 
        return fullList.find({'Color': 'v' || 'r'}); 
       } 
      } 
      else { 
       if (Session.get("displayStrengths")){ 
        console.log("display urgencies and strengths"); 
        return fullList.find({'Color': 'b' || 'r'}); 
       } 
       else { 
        console.log("display urgencies"); 
        return fullList.find({'Color': 'r'}); 
       } 
      } 
     } 
     else if (Session.get("displayInsuff")){ 
      if (Session.get("displayStrengths")){ 
       console.log("display insufficiencies and strengths"); 
       return fullList.find({'Color': 'v' || 'b'}); 
      } 
      else { 
       console.log("display insufficiencies"); 
       return fullList.find({'Color': 'v'}); 
      } 
     } 
     else if (Session.get("displayStrengths")){ 
      console.log("display strengths"); 
      return fullList.find({'Color': 'b'}); 
     } 
     else { 
      console.log("display all (default)"); 
      return fullList.find(); 
     }  
    }, 
+1

正如您目前所拥有的那样,第二次返回从不运行。它在第一个返回中评估语句,然后返回,停止执行。 –

+0

这是偶然从我身上试图想到的任何事情;如果没有第二次回报,它仍然不起作用。我将编辑代码以反映它现在的实际情况;对此感到抱歉 –

+0

你使用'.find'的库是什么? –

回答

4

.find功能不是JS本身的一部分。它是MongoDB集合的一个属性。您可以简单地使用$orMongoDB selector。像这样:

fullList.find({ 
    $or: [ 
    {'Color': 'r'}, 
    {'Color': 'b'} 
    ] 
}) 

在你的例子中fullList是MongoDB集合。你可以阅读更多关于他们here

+0

好吧,知道这是一个MongoDB命令非常有用,但它仍然不起作用。我收到错误消息“模板助手中的异常:错误:$和/ $或/ $也不能是非空数组”。 –

+1

我在那篇文档中发现了一些非常接近你所说的为我工作的东西。我的解决方案最后是fullList.find({Color:{$ in:['v','r']}}); 。谢谢您的帮助! –

+1

对不起,语法错了。修复。 – Kriegslustig