2015-08-24 144 views
0

我在我的mongoDb.in中收集了食譜,其中我在配料上創建了文本搜索索引。這樣我就可以根據我所擁有的成分搜索食譜。結果應該有我通過的食譜原料。 這是從我的MongoDB查詢在mongodb中使用文本搜索索引的多輸入和多個排除

db.RecipeCollection.find({$text:{$search: "\"potato\" \"tomato\""}},{ score: { $meta: "textScore" } },{_id:0,ingredients:1,num_ingredients:1}).sort({ score: 
$meta: "textScore" },num_ingredients:1 }).limit(20).pretty() 

樣品,但問題是,我想通過REST的成分,我怎麼能在調用API傳遞參數一樣{$text:{$search: "\"potato\" \"tomato\""}

recipes.find({ $text: { $search: req.params.ingredients,$language:"en" } } 
      ,{ score: { $meta: "textScore" } } 
      ,{_id :0,name:1,ingredients:1,url:1,image:1,num_ingredients:1}) 
      .sort({score: { $meta: "textScore" },num_ingredients:1}) 
      .limit(req.params.limit); 

我已經看到了這個問題http://stackoverflow.com/questions/16902674/mongodb-text-search-and-multiple-search-words但我沒有足夠的信譽來寫評論,並要求那裏。甚至在它不顯示如何傳遞多個參數。

回答

1

你能傳遞一個JSON陣列:

{$text: {$search: [ "potato", "tomato" ] } } 
+0

{$文字:{$搜索: 「土豆」, 「番茄」]}}是用於搜索多種成分,但怎麼樣排除工作呢?像{$ text:{$ search:[「potato」,「tomato」, - beef,chicken,meat]}} –

+0

也許你可以使用$ not - > https://docs.mongodb.org/manual/reference/運算符/查詢/不// – morsor

+0

db.RecipeCollection.find({$ text:{$ search:「[tomato potato]」,$ not:{[「chicken beef」]},$ language:「en」})。sort ({num_ingredients:1} 我曾嘗試使用$不是,但它不工作,可能排除會有一些限制,最多隻有一個字 –