获取 Mongodb 中多个值的不同值

Getting Distinct values of multiple values in Mongodb

假设我有以下藏书(为简洁起见,删除了 ID 字段):

{ "author" : "Steve Jones", "title" : "Fun Stuff",    "edition" : "2010" }
{ "author" : "Steve Jones", "title" : "Fun Stuff",    "edition" : "2011" }
{ "author" : "Steve Jones", "title" : "Boring Stuff", "edition" : "2010" }
{ "author" : "Ben Johnson", "title" : "Other Stuff",  "edition" : "2010" }

我想只查找每本书的最新版本怎么办?换句话说:我想得到一个结果,它省略了史蒂夫琼斯的 2010 年版 Fun Stuff,只有 2011 年版:

{ "author" : "Steve Jones", "title" : "Fun Stuff",    "edition" : "2011" }
{ "author" : "Steve Jones", "title" : "Boring Stuff", "edition" : "2010" }
{ "author" : "Ben Johnson", "title" : "Other Stuff",  "edition" : "2010" }

如果这是一个关系数据库,而我正在编写一个查询,我可能会写类似 SELECT DISTINCT title, DISTINCT author, edition WHERE 1 SORT BY edition DESC 的内容。所以我来自 SQL 背景的本能是查找 db.collection.distinct() 但它似乎与我习惯的工作方式大不相同;它只是 returns 一个数组,每个字段都有一个不同的值。

这是我需要以编程方式解决的问题吗?或者我可以完全使用 mongo 函数和 bson 来完成吗?

尝试像这样开始:

db.textbooks.aggregate({ $group: {
    _id: { title: "$title", author: "$author" },
    latestEdition: { $max: "$edition" }
}})

这将为您提供每本书的书名和作者以及最新版本。尝试查询和 aggregation 以获得您想要的内容。