将查询条件传递给生成查询字符串的Node.js / Mongodb中的db.collection.find

时间:2015-03-06 13:24:38

标签: node.js mongodb mongoose mongoskin

我正在尝试构建一个NodeJS / mongodb应用程序,当我读取包含(XYZ > 10) OR (XYZ < 15)的请求时。我想在旅途中生成一个查询字符串。然后在某个Mongodb Collection中搜索。以下内容适用:

db.event.find( { 'data.XYZ': {'$lt':15} } ) // This works.

但我想这样做:

var qstr1="{ \'data.XYZ\': {\'$lt\':15} // I would generate this possibly

db.event.find(qstr1)

当我尝试将查询条件作为字符串传递给db.collection.find()时,它会返回整个集合。

我正在使用mongoskin申请。然而,即使通过Mongo Shell,这也不起作用。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:6)

您最终生成查询对象,而不是字符串,因此以编程方式构建查询对象:

var query = {};
var field = 'data.XYZ';
var operator = {};
operator['$lt'] = 15;
query[field] = operator;
db.event.find(query);

如果您确实希望将字符串保存为字符串,则可以使用JSON.parse将字符串解析为查询对象:

var qstr1="{ \"data.XYZ\": {\"$lt\":15} }";
var query = JSON.parse(qstr1);

请注意JSON.parse要求密钥用双引号(不是单引号)包围,并且在shell中不可用。

答案 1 :(得分:0)

FB.init({ appId: '224188011327825', status: true, cookie: true });