0

「コメント」と呼ばれる埋め込みドキュメントのリストを持つ投稿クラスがあります。ここで実行したいのは、ユーザーが投稿したすべての投稿の最新のコメントを取得することです。

どうすればそれを達成できますか?私の現在のコードは、そのユーザーの「Post」クラスをループして、手動で「コメント」を収集します。しかし、これも最近追加されたもので並べ替えたいので、手動で収集したコメントをループして再並べ替える並べ替え機能があります。

これは非常に非効率的であるように思われるので、アドバイスを求めてください。ありがとう!

4

1 に答える 1

1

まず$push、更新してリストに追加した場合は、コメントを順番に保持します。
演算子を使用して$slice、最後のxコメントを返すことができます。例:

Post.objects(id=xxx).fields(slice__comments=-5)

ただし、コメントの数を増やし続けると、スキーマが効率的でない場合があります。そうしないと、コメントが非公開になる可能性があります。その場合、コメントを独自のドキュメントモデルに分割し、コメントを投稿者にリンクすることをお勧めしますid。これはデータベースへの2回の往復になりますが、より柔軟性があります。日付でフィルタリングして公開することができます。

于 2013-01-31T09:53:44.353 に答える