【发布时间】:2013-09-16 12:51:14
【问题描述】:
从基于单个字段的唯一集合中获取所有文档的最简单方法是什么。
我知道我可以使用 db.collections.distrinct 来获取一个字段的所有不同值的数组,但我想为一个字段的每个不同值获取第一个(或实际上是任何一个)文档。
例如如果数据库包含:
{number:1, data:'Test 1'}
{number:1, data:'This is something else'}
{number:2, data:'I'm bad at examples'}
{number:3, data:'I guess there\'s room for one more'}
它会返回(基于 number 是唯一的:
{number:1, data:'Test 1'}
{number:2, data:'I'm bad at examples'}
{number:3, data:'I guess there\'s room for one more'}
编辑:我应该补充一点,服务器正在运行 Mongo 2.0.8,因此没有聚合,并且结果比组支持的要多。
【问题讨论】:
-
升级到 2.4 并使用聚合 :)
-
您可能会发现,即使您使用的版本支持聚合结果,也可能不支持您需要的结果集大小。
-
@Philipp 要是升级这么容易就好了。 @MustafaGenç 我将如何使用不同的?我认为这只能给我五个像
[1,2,3]@WiredPrairie 目前我正在考虑大约 150k 的结果,但我期待它会增长...... -
@TomKiley 这对我来说很容易:关闭 mongod,复制二进制文件,重新启动 mongod。但那是在我的私人测试环境中。当您使用分片和身份验证时there is a bit more you have to do。但我也知道,当您为大型企业工作并尝试更新一些“关键任务”软件时,会涉及多少繁文缛节。