尝试从mongo集合中选择单个文档

时间:2019-02-08 12:35:16

标签: mongodb mongoose

我们的集合中有一个基本的版本控制系统,该系统使用字段(pageId)作为根密钥。此页面的后续版本具有相同的pageId。这使我们可以非常轻松地查找单个页面的所有版本。

如何运行一个查询,该查询针对每个不同的lastModified仅返回pageId文档。

在伪代码中,您可以说:

For each distinct pageId
sort documents based on lastModified descending
and return only the first document

1 个答案:

答案 0 :(得分:0)

您可以使用aggregation pipelines

  • $sort-对所有输入文档进行排序,并按排序顺序将它们返回到管道中。
  • $group-通过某些指定的表达式对文档进行分组,并为每个不同的分组将文档输出到下一阶段。
  • $first-返回将表达式应用于按键共享同一组文档的一组文档中的第一个文档所产生的值。

示例:

db.getCollection('t01').aggregate([
    {
        $sort: {'lastModified': -1}
    },
    {
        $group: {
            _id: "$pageId",
            element1: { $first: "$element1" },
            element2: { $first: "$element2" },
            elementN: { $first: "$elementN" },
        }
    }
]);