我有一个 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")
}
]
}
]
我第一次尝试解决这个问题是找到所有照片不为空的用户,并按创建日期对其进行排序:
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")
}
]
每个结果都应该是一张照片,我应该能够将结果限制在特定数量,并跳过结果以进行分页查看。
如果您需要更多信息,请告诉我,并感谢您的回复。