Mongoose和MongoDB -获取与国家相关的所有国家和用户



所以我有一个帖子数据列表,看起来像这样:

[
{user: 'Bob', country: 'USA'}
{user: 'Kim', country: 'Mexico'}
{user: 'Darren', country: 'Mexico'}
{user: 'Joe', country: 'Mexico'}
]

我想获得我的数据:

[{Mexico: {'Kim', 'Darren', 'Joe'}, USA: {'Bob'}}]

这是我到目前为止得到的,但我对这里的文档和帖子有点困惑。如有任何帮助,我将不胜感激。

Post.aggregate([
{ $group: { _id: "$country", users: { $in: "$posts" } } },
]);

你就快找到答案了。您需要$pushuser字段到users

db.collection.aggregate({
$group: {
_id: "$country",
users: {
$push: "$user"
}
}
})

样品Mongo Playground ($push)


使用$addToSet为数组添加值,不重复

$addToSet操作符将一个值添加到数组中,除非该值已经存在,在这种情况下,$addToSet对该数组不做任何操作。

db.collection.aggregate({
$group: {
_id: "$country",
users: {
$addToSet: "$user"
}
}
})

Mongo Playground ($addToSet)样本

$group$addToSet

db.collection.aggregate([
{
"$group": {
"_id": "$country",
"users": {
"$addToSet": "$user"
}
}
}
])

结果

[
{
"_id": "Mexico",
"users": [
"Kim",
"Darren",
"Joe",
"Bob"
]
},
{
"_id": "USA",
"users": [
"Bob"
]
}
]

mongoplayground

最新更新