2016-11-17 5 views
0

データベースに文字列と一致するドキュメントを取得しようとしていますが、変数を渡すと機能しません。Mongodbクエリが文字列で機能しない

私は、文字列serviceStringを持っていると私はこれを行う場合serviceStringは= "TEST1"、 "TEST2"、 "TEST3"

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

これは、DBから何も返さないしかし:

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

それ私が必要とするものを返してくれます。

なぜそれが機能しないのか分かりませんが、私は文字列としてコンマを入れていると思っています。文字列はユーザ​​ーからの入力であるため変更できますので、クエリの変数をハードコードできません。

+0

この 'クエリ= db.collection( 'サービス')を試してみてください({ 'サービス' を見つけます。: { $:serviceString.split( '、') } }); – chridam

答えて

1

$inは配列を検索しています。

だから、見つけたい文字列の配列を作成する方がいいです。

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

注:あなたはまた、VARを使用する代わりにさせることができ、ここで

次に、あなたのクエリが好きになります:

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

これは感謝しました! –

0

をあなたは必要とします最初に何をしているのかを知るために、完全な文字列を渡しています

"test1","test2","test3" 

は、この

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

とクエリのような何かをする

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

これは感謝しました! –

関連する問題