Bạn có thể sử dụng $project &$unwind &$group của tổng hợp
khung để có được kết quả gần hơn với yêu cầu của bạn.
> db.countries.aggregate({$project:{a:'$data.country.neighbor.name'}},
{$unwind:'$a'},
{$unwind:'$a'},
{$group:{_id:'a',res:{$addToSet:'$a'}}})
{
"result" : [
{
"_id" : "a",
"res" : [
"Colombia",
"Malaysia",
"Switzerland",
"Costa Rica",
"Austria"
]
}
],
"ok" : 1
}
$unwind được sử dụng hai lần vì mảng tên được lồng vào sâu. Và nó sẽ chỉ hoạt động nếu neighbor thuộc tính là một mảng. Trong ví dụ của bạn, một trường láng giềng (Malaysia) không phải là một mảng