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

如何使用JSON在MongoDB中进行查询?,json,mongodb,Json,Mongodb,如果一个JSON字段与数据库中的某个字段匹配,MongoDB中是否仍然可以使用JSON进行查询并返回一个对象? 例如,我有一个名为keysArray的对象 { house: 'true', garden: 'false' } 我想在Mongo中进行查询,将此对象作为查询字段传递,并返回数据库中的某个对象是否至少与其中一个字段匹配: keysArray.forEach(function(key){ collection.find({keysArray}, functi

如果一个JSON字段与数据库中的某个字段匹配,MongoDB中是否仍然可以使用JSON进行查询并返回一个对象? 例如,我有一个名为keysArray的对象

 { house: 'true', garden: 'false' } 
我想在Mongo中进行查询,将此对象作为查询字段传递,并返回数据库中的某个对象是否至少与其中一个字段匹配:

keysArray.forEach(function(key){
            collection.find({keysArray}, function(err, propertyMatch){
                console.log(propertyMatch)
            })
        })
即使我的数据库中有一个与这些字段匹配的对象,我也没有返回任何对象

提前谢谢

…我想在Mongo中进行一个查询,将此对象作为 查询字段,并返回数据库中的某个对象是否与 这些字段中至少有一个

如果我听得懂的话,这听起来像是一个逻辑问题。
在这种特定情况下,无法将类似JSON的对象传递给查询,因为这将是一个隐式的逻辑条件。
因此,您应该首先构建一个OR表达式,并在
集合中使用它。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}}]}
因此:


您是否输入了要传递给查询的对象?你有
.find({keysArray},func…
,你不想传递
.find({key},func…
?是的,我试过了,但还是没有结果。听起来你想要json上的“或”逻辑
db.collection.find(build_logic_or(myjson))