获取Mongodb中多个值的不同值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取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" }

我应该只查找每本书的最新版本?换句话说:我想得到一个省略了史蒂夫·琼斯(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来做到这一点?

答案
尝试类似的事情开始:

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

这将按标题和作者以及最新版本为您提供每本独特的书。使用查询和aggregation来获得所需的内容。

以上是关于获取Mongodb中多个值的不同值的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB:获取具有两个值的不同组合的最新文档

使用 C# 代码从 MongoDB 数组中获取不同的值,其中它专门匹配某些值

Mongodb聚合:从键值对象返回不同值的计数

MongoDB:匹配字符串字段中的多个值

MongoDB - 查询匹配数组值的多个文档;

用于获取多个值的 Django MySQL 不同查询