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

我正在尝试构build一个NodeJS / mongodb应用程序,当我读取包含(XYZ > 10)(XYZ < 15)的请求时。 我想在旅途中生成一个查询string。 然后在某个Mongodb集合中进行search。 以下将起作用:

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

但是我想这样做:

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

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

我正在使用mongoskin的应用程序。 然而,即使通过Mongo Shell也不行。

有没有办法做到这一点?

你最终生成一个查询对象 ,而不是一个string,所以编程build立查询对象:

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

如果你真的想把东西当成一个string,你可以使用JSON.parse将stringparsing成一个查询对象:

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

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

 create json sting as { "specilities.specility_name":"cosmetic","specilities.countries .country_code":"91","specilities.countries.states.state_name":"maharashtra","spe cilities.countries.states.cities.city_name":"mumbai","specilities.countries.stat es.cities.procedures.procedure_name":"ssss" } and infind pass parameter as abc.find(JSON.parse(str_temp_querry), callback);