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