将查询条件传递给生成查询字符串的 Node.js/Mongodb 中的 db.collection.find
Passing query conditions to db.collection.find in Node.js/Mongodb where the query string is generated
我正在尝试构建一个 NodeJS/mongodb 应用程序,当我读取包含 (XYZ > 10)
或 (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()
时,它 returns 我得到了整个集合。
我正在使用 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.
中不可用
像这样创建一个 JSON 字符串:
{
"specilities.specility_name":"cosmetic",
"specilities.countries.country_code":"91",
"specilities.countries.states.state_name":"maharashtra",
"specilities.countries.states.cities.city_name":"mumbai",
"specilities.countries.states.cities.procedures.procedure_name":"ssss"
}
并在查找传递参数中作为
abc.find(JSON.parse(str_temp_query), callback);
我正在尝试构建一个 NodeJS/mongodb 应用程序,当我读取包含 (XYZ > 10)
或 (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()
时,它 returns 我得到了整个集合。
我正在使用 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.
像这样创建一个 JSON 字符串:
{
"specilities.specility_name":"cosmetic",
"specilities.countries.country_code":"91",
"specilities.countries.states.state_name":"maharashtra",
"specilities.countries.states.cities.city_name":"mumbai",
"specilities.countries.states.cities.procedures.procedure_name":"ssss"
}
并在查找传递参数中作为
abc.find(JSON.parse(str_temp_query), callback);