我按照建议尝试了此代码;但是它没有将fieldlist作为变量
searchstr [k] = {fieldlist:fields [l]};
我必须创建动态搜索字符串,因为我必须搜索更多的多个字段组合。
var searchstr={};
// start
var fieldlist=[ "city", "department"];
// var fieldlist=["treatment","city","name","facility","department","accreditation"];
var k=0;
fieldlist.forEach(function(fieldlist)
{
searchstr[k]="";
for(var l= 0;l<fields.length;l++)
{
searchstr[k]= {fieldlist:fields[l]};
}
console.log(searchstr[k]);
k++;
});
console.log(searchstr);
// end
Hospitals.find(
{ $or: [{ searchstr: {city:1}} ]
}
).sort({'city': 1}).exec(function (err, hospitals) {
if(err){
req.flash("error","Couldn't find hospital for "+strUser);
res.redirect("/");
console.log(err);
}else{
..some code..
}
显示为的searchstr
{'0':{fieldlist:'CARDIOLOGY'},'1':{fieldlist:'CARDIOLOGY'}
给出空结果;
感谢先生。 Vito Mario 进行回复;你能建议点什么吗?
谢谢
阿努拉格
答案 0 :(得分:0)
好吧,我已经看到了两个问题,第一个,您给searchstr一个字符串值,我知道您是故意这样做的,但是您不会得到想要的结果,因为mongo无法通过字符串查询而是一个对象,因此您应该改为:
searchstr[k]= {fieldlist[k]:fields[l]};
因此,您必须将searchstr声明为一个对象。 然后另一件事是您需要按以下方式进行查询:
Hospitals.find( { $or: [{ searchstr: {city:1}, {department: 'foo'}} ]} ).sort({'city': 1}).exec(function (err, hospitals) {
if(err){.some code.}
else{.some code.}
});
这是一个示例,您可以在https://docs.mongodb.com/manual/reference/operator/query/or/处访问mongodb文档以获取更多信息,希望对您有所帮助。