MongoDB コレクション [Users] があり、それぞれにドキュメント [Photos] の配列が埋め込まれています。たとえば、最近の写真を一覧表示するページを作成できるようにしたいと考えています。たとえば、任意のユーザーがアップロードした最新の 10 枚の写真です。
ユーザー
[
{
_id: ObjectID
name: "Matthew"
Photos: [
{
_id: ObjectID
url: "http://www.example.com/photo1.jpg"
created: Date("2013-02-01")
},
{
_id: ObjectID
url: "http://www.example.com/photo3.jpg"
created: Date("2013-02-03")
}
]
},
{
_id: ObjectID
name: "Bob"
Photos: [
{
_id: ObjectID
url: "http://www.example.com/photo2.jpg"
created: Date("2013-02-02")
},
{
_id: ObjectID
url: "http://www.example.com/photo4.jpg"
created: Date("2013-02-04")
}
]
}
]
これを解決するための私の最初の試みは、 Photos が null でないすべてのユーザーを見つけて、作成日で並べ替えることでした:
User.find({images:{$ne:[]}}).sort({"images.created":-1})
残念ながら、これは必要に応じて機能しません。ユーザーを最新の画像で並べ替えますが、すべての画像を返します。関数によって返される画像の数を制限する方法はありません。
集計を調べ始めましたが、それが私が探している解決策のように思えますが、それを機能させる方法を見つけるのに苦労しています.
理想的には、返される結果のタイプは次のようになります。
results: [
{
_id: ObjectID (from Photo)
name: "Bob"
url: "http://www.example.com/photo4.jpg"
created: Date("2013-02-04")
}
{
_id: ObjectID (from Photo)
name: "Matthew"
url: "http://www.example.com/photo3.jpg"
created: Date("2013-02-03")
}
]
各結果は写真である必要があり、結果を特定の量に制限し、ページ表示のために結果をスキップできる必要があります。
さらに情報が必要な場合はお知らせください。ご回答いただきありがとうございます。