具有多个条件的MongoDB中的.find()

时间:2015-06-26 16:11:48

标签: mongodb meteor

我正在使用meteor和JavaScript构建一个webapp,并希望根据属性过滤JSON对象。我可以运行fullList.find()来获取所有内容,fullList.find({'Color': 'r'})只获取“红色”项目,但我想要返回所有“红色”或“蓝色”的项目,并且无法弄清楚正确的语法。我尝试了各种组合,例如fullList.find({'Color': 'r' || 'b'})fullList.find({'Color': ('r' || 'b')}),但它要么根本不运行,要么返回只有一个属性的项目,而不是返回带有其中任何一项的项目。我觉得这应该是一个简单的解决方案,我对JavaScript不是很熟悉。

这是我的(相关)完整性代码。只有两个条件为真的逻辑(而不是一个或三个)才会失败:

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 :(得分:4)

这个.find函数不是JS本身的一部分。它是MongoDB集合的属性。您只需使用$or MongoDB selector即可。像这样:

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

在您的示例中,fullList是MongoDB集合。您可以阅读有关他们的更多信息here