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:"id" bson:"id"`
participants []string `json:"participants" bson:"participants"`
lastmessage *message `json:"last_message,omitempty" bson:"last_message"`
...
}
</pre>
は必要ありません。
のサブパイプラインで $sort
$limit
メソッドを実行するだけです。 $unwind
を実行して、検索結果を last_message
フィールドに書き込みます。最後に、$merge
を実行して、chat
コレクションを更新します。
リーリー
でコレクションに更新された old mongo playground です。
以上が集約、あるコレクションから別のコレクションへのデータの挿入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。