首页 > 解决方案 > mongoose 和 mogodb 获取与国家相关的所有国家和用户

问题描述

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

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

我希望我得到我的数据

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

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

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

标签: node.jsmongodbexpressmongoose

解决方案


$group $addToSet

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

结果

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

mongoplayground


推荐阅读