我正在尝试在mongodb中查找数据。我有这样的数据
{"name":"xxxx","product":"laptop,phone,mobile"}
{"name":"yyyy","product":"phone,iphone,pendrive"}
我试图找到“phone”在产品密钥中,所以我在终端
中尝试了这个命令db.collection.find({"product": /phone/});
它工作正常,但它在我的应用程序中无效。所以我在我的应用程序中动态尝试过。
var key=phone;
var name="/"+key+"/";
collection.find({"product":name}).toArray(function(err,result)
{
console.log(result.length);
});
但我总是得到0长度,所以如何动态使用它?
答案 0 :(得分:4)
你每次都在寻找2件不同的东西。在终端中,您正在使用正则表达式搜索单词phone的出现。在您的应用程序中,您正在搜索字符串文字“/ phone /”的出现次数。您还需要在应用中的mongodb查询中进行正则表达式搜索:
var key = 'phone';
collection.find({"product":{ $regex: key }).toArray(function(err,result) ...
答案 1 :(得分:1)
var key = 'phone';
var reg = RegExp('.*'+key+'.*','gi');
collection.find({"product":{ $regex: reg }).toArray(function(err,result){
}
如果您的密钥出现在字符串之间,那么这将起作用