2013-02-12 57 views
1

我正在試圖在mongodb中查找數據。我有這樣的如何查找特定值是否在密鑰中

{"name":"xxxx","product":"laptop,phone,mobile"} 
{"name":"yyyy","product":"phone,iphone,pendrive"} 

我試圖找到「手機」的數據是在產品的關鍵,所以我試圖在終端

db.collection.find({"product": /phone/}); 

此命令時,它工作正常,但它不是在工作我的應用程序。因此,我已經在我的應用程序中動態地嘗試過。

var key=phone; 
var name="/"+key+"/"; 
collection.find({"product":name}).toArray(function(err,result) 
{ 
    console.log(result.length); 
}); 

但我總是隻有0長度,所以如何動態地使用它?

回答

4

您每次搜索2個不同的東西。在終端中,您正在使用正則表達式搜索phone這個詞的出現。在您的應用程序中,您正在搜索字符串文字'/ phone /'的出現。你需要做一個正則表達式搜索在您的應用程序的MongoDB的查詢,以及:

var key = 'phone'; 
collection.find({"product":{ $regex: key }).toArray(function(err,result) ... 
+1

這是工作now..thanks ... – silvesterprabu 2013-02-12 11:13:24

+0

我要出去放什麼時候我會給像p和像電話相關的字符串相關的字符。但我只想要數據時,我會給像電話一樣確切的字符串數據。怎麼找 ? – silvesterprabu 2013-02-13 08:01:33

1
var key = 'phone'; 
var reg = RegExp('.*'+key+'.*','gi'); 
collection.find({"product":{ $regex: reg }).toArray(function(err,result){ 

} 

如果您的鑰匙串中之間出現也這將工作

+0

我得到相同的output.i必須從數據庫獲得數據,如果我給手機,否則我的結果應該是零。如果我給p和ph和pho我的retrive結果長度應該是zero.so讓我知道正確的解決方案來解決它。 – silvesterprabu 2013-02-14 07:59:18

+0

然後只需使用var reg = RegExp(key,'gi'); – subbu 2013-02-14 09:04:09

相關問題