Say we have the following docs:
{a: 1, b: 2},
{a: 2, b: 0},
{a: 3, b: 1}
I want a query that will return:
[0, 1, 2, 3]
You need to $group our documents and use the $push accumulator operator to return an array of "a" and "b" within the collection.
In the $project operator you use the $setUnion operator to filter out the duplicates.
db.coll.aggregate(
[
{ "$group": {
"_id": null,
"a": { "$push": "$a" },
"b": { "$push": "$b" }
}},
{ "$project": {
"_id": 0,
"merged": { "$setUnion": [ "$a", "$b" ] }
}}
]
)
which produces:
{ "merged" : [ 3, 2, 0, 1 ] }