1

给定 MongoDB 中的以下数据:

[ 
  { id: 1, stuff: ["A", "B"] },
  { id: 2, stuff: ["B", "C"] },
  ... (lots and lots of records)
]

是否有可能获得所有“东西”集的联合?例如["A","B","C"]

我试过使用$addToSet

aggregate([
  { $group: {
      _id: null, 
      allStuff: { $addToSet: "$stuff" }
    }
  }
])

但这会创建一组集合,例如[ ["A", "B"], ["B", "C"] ]

4

1 回答 1

1

好的,在展示您的尝试之后,您可以执行以下操作:

db.a.aggregate([
  { $unwind : "$stuff" },
  { $group : {
    _id: null,
    all : {$addToSet : "$stuff"}
  }}
])

一开始,它会展开您拥有的数组中的所有元素,然后尝试将它们全部添加到集合中。

db.a.insert({ id: 1, stuff: ["A", "B"] })
db.a.insert({ id: 2, stuff: ["B", "C"] })
db.a.insert({ id: 3, stuff: ["A", "B", "C", "D"] })

给你:{ "_id" : null, "all" : [ "D", "C", "B", "A" ] }

于 2014-09-28T07:24:30.363 回答