获取Mongodb中多个值的不同值

问题描述 投票:4回答:1

让我们想象一下,我有以下几本书集(出于简洁的原因,编辑了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" }

我应该只查找每本书的最新版本?换句话说:我想得到一个省略了史蒂夫·琼斯(Steve Jones)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(),但它的工作方式与我以前所用的完全不同。它仅返回一个数组,该数组具有单个字段的每个不同值。

这是我需要以编程方式解决的问题吗?还是我可以完全使用mongo函数和bson来做到这一点?

mongodb mongodb-query bson
1个回答
7
投票
尝试类似的事情开始:

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

这将按标题和作者以及最新版本为您提供每本独特的书。使用查询和aggregation来获得所需的内容。
© www.soinside.com 2019 - 2024. All rights reserved.