23

次のドキュメントを含む「people」というコレクションがあるとします。

{
    "name": "doug",
    "colors": ["blue", "red"]
}

{
    "name": "jack",
    "colors": ["blue", "purple"]
}

{
    "name": "jenny",
    "colors": ["pink"]
}

すべてのサブ配列の連結配列を取得するにはどうすればよいcolorsですか?

["blue", "red", "blue", "purple", "pink"]
4

2 に答える 2

33

まあ、Tryはあなたのためにうまくいくはずです!!

db.people.distinct("colors")
于 2013-09-02T17:15:16.610 に答える
28

集計を使用してみてください:

db.people.aggregate([
  {$unwind:"$colors"},
  {$group:{_id:null, clrs: {$push : "$colors"} }},
  {$project:{_id:0, colors: "$clrs"}}
])

結果:

{
"result" : [
    {
        "colors" : [
            "blue",
            "red",
            "blue",
            "purple",
            "pink"
        ]
    }
],
"ok" : 1
}

更新しました

結果の配列で一意の値を取得する場合は、ステージではなく$addToSet演算子を使用できます。$push$group

于 2013-09-02T17:35:33.590 に答える