如何找到具体的价值取决于关键与否

时间:2013-02-12 10:19:48

标签: node.js mongodb

我正在尝试在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长度,所以如何动态使用它?

2 个答案:

答案 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){

}

如果您的密钥出现在字符串之间,那么这将起作用