【发布时间】:2021-11-09 20:29:41
【问题描述】:
我对 mongodb 的聚合函数感到非常困惑。我只想在我的收藏中找到最新的文档。假设每条记录都有一个“已创建”字段
db.collection.aggregate({
$group: {
_id:0,
'id':{$first:"$_id"},
'max':{$max:"$created"}
}
})
产生正确的结果,但我想要结果中的整个文档?我该怎么做?
这是文档的结构:
{
"_id" : ObjectId("52310da847cf343c8c000093"),
"created" : 1389073358,
"image" : ObjectId("52cb93dd47cf348786d63af2"),
"images" : [
ObjectId("52cb93dd47cf348786d63af2"),
ObjectId("52f67c8447cf343509d63af2")
],
"organization" : ObjectId("522949d347cf3402c3000001"),
"published" : 1392601521,
"status" : "PUBLISHED",
"tags" : [ ],
"updated" : 1392601521,
"user_id" : ObjectId("52214ce847cf344902000000")
}
【问题讨论】:
-
你为什么不使用排序的
find? -
因为我想了解如何使用聚合
-
aggregate不太适合这种类型的事情,因为您不能轻易地将完整的文档包含在$group中,您必须分别引入每个字段。 -
我在某处看到了一个示例,该示例对聚合结果进行了 forEach-ed,然后使用了 results.push(findOne),但我无法使其工作。我只想弄清楚如何通过一些复杂的关系过滤或什至将聚合字段添加到文档中来获取文档。
-
我在 cmets 中看到您实际上正在尝试做一些与此不同的事情。您能否编辑您的问题以解释您实际想要达到的目标?请附上一份样本文件。
标签: mongodb aggregation-framework