将查询条件传递到Node.js/Mongodb中生成查询字符串的db.collection.find
我正在尝试构建一个NodeJS/mongodb应用程序,当我读取一个包含将查询条件传递到Node.js/Mongodb中生成查询字符串的db.collection.find,node.js,mongodb,mongoose,mongoskin,Node.js,Mongodb,Mongoose,Mongoskin,我正在尝试构建一个NodeJS/mongodb应用程序,当我读取一个包含(XYZ>10)或(XYZ
(XYZ>10)
或(XYZ<15)
的请求时。我想在运行中生成一个查询字符串。然后在某个Mongodb集合中进行搜索。以下工作将起作用:
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,这也不起作用
有办法做到这一点吗 您最终生成的是一个查询对象,而不是字符串,因此以编程方式构建查询对象:
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中不可用。JohnnyHK,感谢您的回复!!我会试试看,然后告诉你。query[field]=运算符是什么意思?在哪里可以找到有关“查询”对象的更多文档?我可以使用上述机制构建复杂的查询吗。很抱歉问了这么多问题,我是Javascript/Mongodb等人的新手。@AJ0073query
和operator
只是普通的Javascript对象,所以它们可以像您喜欢的那样复杂query[field]=operator
表示向名为field
的值的query
对象添加一个字段,并将其作为值分配给operator
对象。感谢您的解释!!:)
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);