2017-05-04 10 views
0

MongoDB 3.4

私は変数に値を持っています。 VAL1 =「フォート・マイナー」

私は、変数MongoDB:変数を使ったテキスト検索(完全一致)

を使用してコレクションを検索テキストとき

db.stores.insert([ 
    { _id: 1, name: "Java Hut", description: "Coffee and cakes" }, 
    { _id: 2, name: "Burger Buns", description: "Gourmet hamburgers" }, 
    { _id: 3, name: "Coffee Shop", description: "Just coffee" }, 
    { _id: 4, name: "Fort Coffee", description: "Discount clothing" }, 
    { _id: 5, name: "Java Shopping", description: "Indonesian goods" } 
]) 


として文書を(名前フィールドにテキストインデックスを持つ)は、コレクションの店舗で検索する必要があります

db.City.find({$text:{$search: val1}}) 

フォートが含まれているため、_id:4ドキュメントを返します。

私は完全一致を行うが、変数を使用する必要があります。

上記の検索が&調理一致させるために例えば(テキスト検索を行うとVAL1 =「フォートコーヒー」は、それが単語の最低ステムを分析し、あなたの仕事をトークン化などの多くの内部のステップがあり

+0

db.City.find({名:val1と})は、この –

+0

を使用しかし、私はテキスト検索を行う必要があります。 –

答えて

2

ときにのみ返す必要がありますどちらも基本的な仕事である "コック")。完全一致を期待している場合は、実際には検索を探していませんが、通常の検索を探しています。あなたがこれを行う場合はそのため

db.City.find({$text:{$search: "Fort Minor"}}) 

をそれはそれでなどforting、マイナー、少数派、砦を持っているすべてのドキュメントを検索しようとします。

あなたは以下を行う場合:あなたは完全に一致して文書を与える場合

db.City.find({ name : "Fort Minor"}) 

しかし、ここでキャッチです:あなたは次のようにすべて小文字を検索する場合

db.City.find({ name : "fort minor"}) 

それはあなたが期待している何を与えることはありません。これを解決するには

は、正規表現のために行く:

db.user.find({ name: /^Fort Minor$/i }); 
+0

私は比較のために変数を使用する必要があります。値をハードコーディングすることはできません。 –

+0

ユーザー変数を連結で入力することができます。これは単なる例です –

+0

テキスト検索クエリで変数を使用できますか? –

関連する問題