ホームページ  >  記事  >  バックエンド開発  >  同じ名前のネストされたフィールドのテキスト インデックスを作成する方法

同じ名前のネストされたフィールドのテキスト インデックスを作成する方法

WBOY
WBOY転載
2024-02-09 21:00:101063ブラウズ

同じ名前のネストされたフィールドのテキスト インデックスを作成する方法

phpエディタStrawberryでは、ネストされたフィールドに同じ名前のテキストインデックスを作成する方法を紹介します。データベースでは、ネストされたフィールドで検索とクエリを実行する必要がある状況によく遭遇します。ただし、同じ名前のネストされたフィールドが複数ある場合、テキスト インデックスの作成は複雑になります。この記事では、この問題に対処する方法と解決策を詳しく説明します。次に、同じ名前のネストされたフィールドのテキスト インデックスを簡単に作成する手順を段階的に説明します。

質問内容

同じ名前の 2 つのネストされたフィールドに複合テキスト インデックスを作成しようとしています。これをやろうとしている理由は、両方のフィールドで mongo を使用して全文検索を実行できるようにするためです。

データ構造の例

リーリー

例からわかるように、questionanswer には同じネストされたフィールド statement があります。 質問と回答のテキスト インデックスを作成しようとしています

私がやろうとしていること

リーリー

これは機能せず、次のエラーが発生しました:

リーリー
  • これを行う方法はありますか?
  • 私のアプローチは、私が達成したいことに対して正しいでしょうか?

p.s: go に詳しくない場合は、mongodb go ドライバーへのマッピングが非常に簡単なので、mongodb にアップロードすることもできます。

回避策

お願いしますコレクションには最大 1 つの テキスト インデックス .

を含めることができることに注意してください。

これを知っていて、"question.statement""answer.statement" をカバーするテキスト インデックスを作成したい場合は、これで機能します。

あなたの間違いはインデックスの指定です: bson .d はドキュメント、つまり属性 (名前と値のペア) の順序付きリストを表します。これは bson.e の一部であり、bson.e は次のとおりです。 リーリー

key は属性の名前、value は属性の値です。したがって、これを逆さまにすると、次のようになります。 リーリー

以上が同じ名前のネストされたフィールドのテキスト インデックスを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。