{ house: 'true', garden: 'false' }
我想在Mongo中查询将此对象作为查询字段传递,如果我的数据库中的某个对象与这些字段中的至少一个匹配,则返回:
keysArray.forEach(function(key){
collection.find({keysArray}, function(err, propertyMatch){
console.log(propertyMatch)
})
})
我没有回来任何对象,即使我的数据库中有一个与这些字段匹配的对象。
提前致谢
答案 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))