5

「フィールド内の一意の値をすべて取得するにはどうすればよいですか?」という質問に対する多くの回答を目にします。その方法を提案し.distinct()ます。しかし、これはそれらの値の単純な配列を返します。フィールドの値が一意であるすべてのドキュメントを取得するにはどうすればよいですか?

[{age: 21, name: 'bob'}, {age: 21, name: 'sally'}, {age: 30, name: 'Jim'}] 
Query for unique age -->
[{age: 21, name: 'sally'}, {age: 30, name: 'Jim'}]
or
[{age: 21, name: 'bob'}, {age: 30, name: 'Jim'}]

事後的にクエリをフィルター処理することは理想的な解決策ではありません。

4

2 に答える 2

4
> db.foo.insert([{age: 21, name: 'bob'}, {age: 21, name: 'sally'}, {age: 30, name: 'Jim'}])
> db.foo.count()
3
> db.foo.aggregate({ $group: { _id: '$age', name: { $max: '$name' } } }).result
[
    {
        "_id" : 30,
        "name" : "Jim"
    },
    {
        "_id" : 21,
        "name" : "sally"
    }
]
于 2013-02-05T00:00:41.300 に答える