ホームページ  >  記事  >  バックエンド開発  >  集約、あるコレクションから別のコレクションへのデータの挿入

集約、あるコレクションから別のコレクションへのデータの挿入

王林
王林転載
2024-02-10 23:30:19727ブラウズ

集約、あるコレクションから別のコレクションへのデータの挿入

php エディター Youzi は、この記事で一般的な操作である集計、つまり、あるコレクションから別のコレクションにデータを挿入する操作を紹介します。集計操作はプログラミングにおいて非常に一般的であり、データの結合、重複排除、フィルタリングなどのさまざまなシナリオで使用できます。集計操作により、データの処理と管理が容易になり、コードの効率と可読性が向上します。次に、誰もがこのテクニックをよりよく習得できるように、集計操作の使用法と注意事項を詳しく紹介します。

質問の内容

特定のユーザーの chat コレクションからチャットのリストを取得し、メッセージを送信するために次の操作を実行しようとしています。コレクション の最後のメッセージがチャットごとにこのリストに追加されます。

これがどのように機能するかというと、以下に説明する 2 つの方法があります

まず、チャット メンバー ID を使用してチャットのリストを取得します。2 番目の方法では、集計を使用して各チャットの最後のメッセージを見つけます。その後、メッセージとチャット ID を照合します。

お気に入りチャット:

リーリー ###注記

lastmessage - は常にゼロです。ユーザーへの応答を書き込む場合にのみ必要です。

コレクション

メッセージ: リーリー

最初のメソッド: このメソッドは、特定のチャット参加者のアクティブなチャット リストを取得するために必要です。 リーリー

2 番目のメソッド : 各チャットの最後のメッセージを取得するには、このメソッドが必要です。入力はチャット ID のセットで、チャットごとに最後のメッセージ (がある場合) を検索します。このために私は集計を使用します。 リーリー

これが本当に悪い解決策であることはわかっていますが、今のところ私が思いつくのはこれだけであり、残念です (機能しません)。この問題を解決しようとします

リーリー

私の質問は次のとおりです: 集計を使用して特定のユーザーのチャットのリストを取得し、各チャットについて

message# のオブジェクト chat のフィールド last_message に最後のメッセージを追加する方法## コレクション情報? 現在の仕組み: <pre class="brush:golang;toolbar:false;">type chat struct { id string `json:&quot;id&quot; bson:&quot;id&quot;` participants []string `json:&quot;participants&quot; bson:&quot;participants&quot;` lastmessage *message `json:&quot;last_message,omitempty&quot; bson:&quot;last_message&quot;` ... } </pre>

回避策

編集:OPがコメントで述べているように、コレクションへのupdate/

$merge

は必要ありません。

$lookup

のサブパイプラインで $sort $limit メソッドを実行するだけです。 $unwind を実行して、検索結果を last_message フィールドに書き込みます。最後に、$merge を実行して、chat コレクションを更新します。 リーリー

モンゴの遊び場

これは、

$merge

でコレクションに更新された old mongo playground です。

以上が集約、あるコレクションから別のコレクションへのデータの挿入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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