0

ユーザー指定の配列があるとします。

q = ['dolor', 'sed']

そして、私のデータベースのアイテムは次のとおりです。

{//data,
 'paragraphs' : [{ 'header' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam venenatis lectus risus, a interdum lectus rhoncus sed. Vestibulum sit amet massa eu metus iaculis laoreet et non est. ',
                 //mode data
                 },
                 { .. }]
}

dolor 「paragraphs.header」にor という単語が含まれているかどうかを調べたいsed

私は試し$inてみsearchましたが、成功しませんでした。何を使えばいいですか?

4

1 に答える 1

0

感染する方法は、正規表現を使用することです。

db.foo.find({"paragraphs.header": {$in: [/dolor/, /sed/]}})

これはいずれも文字列の先頭に固定されていないため、インデックスを使用できず、一致するドキュメントを見つけるためにフル スキャンを実行する必要があります。

効果的な方法が必要な場合は、TextSearchを参照してください。

  • でモンゴッドを始める--setParameter textSearchEnabled=true
  • テキスト インデックスを作成するdb.foo.ensureIndex({"paragraphs.header": "text"})
  • 探すdb.foo.runCommand("text", {search: "dolor sed"})

テキスト インデックスの作成時またはコマンドの実行時に言語を指定できますtextが、残念ながらラテン語はサポートされていません;)

于 2013-11-08T12:18:01.493 に答える