如何使用JSON在MongoDB中进行查询?

时间:2016-09-14 19:33:31

标签: json mongodb

无论如何,如果json中的一个字段与数据库中的某个字段匹配,那么是否使用JSON在MongoDB中进行查询并返回一个对象? 例如,我有一个名为keysArray

的对象
 { house: 'true', garden: 'false' } 

我想在Mongo中查询将此对象作为查询字段传递,如果我的数据库中的某个对象与这些字段中的至少一个匹配,则返回:

keysArray.forEach(function(key){
            collection.find({keysArray}, function(err, propertyMatch){
                console.log(propertyMatch)
            })
        })

我没有回来任何对象,即使我的数据库中有一个与这些字段匹配的对象。

提前致谢

1 个答案:

答案 0 :(得分:3)

  

...我想在Mongo中传递这个对象作为一个查询   查询字段,如果我的数据库中的某个对象与at匹配则返回   至少有一个领域。

这听起来像是OR逻辑 - 如果我理解得很好的话 在这种特定情况下,无法传递类似JSON的对象进行查询,因为它将是一个隐含的 AND 逻辑条件。
所以你应首先构建一个OR表达式并在collection.find()中使用它,如下所示:

var myjson = {'status': 32, 'profile': {$exists: false}};

function build_logic_or(json) {
    var orExpr = [];

    for (var field in json) {
        var expr = {};
        expr[field] = json[field];
        orExpr.push(expr);
    }

    return {'$or': orExpr};
}

它会构建一个这样的表达式:

{"$or":[{"status":32},{"profile":{"$exists":false}}]}

所以:

db.collection.find(build_logic_or(myjson))