web-dev-qa-db-ja.com

mongodbの特定のフィールドのすべての値をリストします

コレクション内のすべてのドキュメントの特定のフィールドのすべての値を含む配列を取得するにはどうすればよいですか?

db.collection:

{ "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "x" : 1 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "x" : 2 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "x" : 3 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be9"), "x" : 4 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "x" : 5 }

「db.collection.ListAllValuesForfield(x)」結果:[1,2,3,4,5]

また、このフィールドが配列の場合はどうなりますか?

{ "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "y" : [1,2] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "y" : [3,4] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "y" : [5,6] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be9"), "y" : [1,2] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "y" : [3,4] }

"db.collection.ListAllValuesInArrayField(y)"結果:[1,2,3,4,5,6,1,2,3,4]

さらに、この配列を一意にすることはできますか? [1,2,3,4,5,6]

36
chimpsarehungry

db.collection.distinct('x')

そのフィールドの一意の値の配列を提供する必要があります。

67
John Petrone

注意:私の答えは元の答えからの分岐です。

ここで「親指を立てる」前に、受け入れられた答えを「親指で上げる」:)。


db.collection.distinct("NameOfTheField")

単一のコレクションまたはビュー全体で指定されたフィールドの個別の値を検索し、結果を配列で返します。

リファレンス: https://docs.mongodb.com/manual/reference/method/db.collection.distinct/

3
ivanleoncz

これは、x値のみを含むドキュメントの配列を返します...

db.collection.find(
    { },
    { x: 1, y: 0, _id:0 }
)
2
martskins