2016-11-17 114 views
0

我想獲取匹配字符串的數據庫中的文檔,但是當我傳入變量時它不起作用。Mongodb查詢不能使用字符串

我有一個字符串serviceString和serviceString = 「測試1」, 「測試2」, 「TEST3」

 query = db.collection('Services').find({ 
      'Service': { 
       $in: [serviceString] 
      } 
     }); 

這從數據庫中返回什麼,但如果我這樣做:

 query = db.collection('Services').find({ 
      'Service': { 
       $in: ["test1", "test2", "test3"] 
      } 
     }); 

它工作並返回我需要的東西。

你知道爲什麼它不工作嗎,我在想這個字符串是把逗號作爲一個字符串。什麼是我可以這樣做的方式,因爲字符串是來自用戶的輸入,所以它可以更改,所以我不能在查詢中硬編碼變量?

+0

試試這個'查詢= db.collection( '服務')找到({ '服務': { $ in:serviceString.split(',') } });' – chridam

回答

1

$in正在尋找一個數組。

所以,最好創建一個你想查找的字符串數組。

let serviceString = ["test1", "test2", "test3"];

注:您也可以使用無功而不是讓這裏

然後將查詢看起來喜歡:

let serviceString = ["test1", "test2", "test3"]; 
query = db.collection('Services').find({ 
     'Service': { 
      $in: serviceString 
     } 
}); 

的更多信息:https://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html#special-query-operators

+0

This Work thanks! –

0

您需要要知道你在做什麼,你首先傳遞一個完整的字符串

"test1","test2","test3" 

做這樣的事情

var serviceString = ["test1","test2","test3"]; 

,然後查詢

query = db.collection('Services').find({ 
      'Service': { 
       $in: serviceString 
      } 
     }); 
+0

這工作謝謝! –