MongoDB查询多个值

MongoDB query multiple values

我有一个与此类似的用户模型:

{
  email: String,
  name: String,
  role: String,
  location: {
    country: String,
    city: String
  },
  contacts: {
    email: String,
    phone: String
  }
}

我的想法是在首页显示以下信息:

所以,在 header 中,我希望有一个国家/地区列表:

每个国家的城市列表:

并且在 body 用户列表中...

目前我的查询适用于除城市以外的所有内容。

查询是:

User.aggregate([
        { 
            $group: { 
                _id: { country: '$location.country' },
                users: { $push: '$$ROOT' },
                cities: { $addToSet: '$location.city' },
                count: { $sum: 1 }
            }
        }
    ], function(err, results) {

        console.log(results);

    });
};

$addToSet 中包含 $sum 会很好,但不幸的是它不起作用。

如何改进此代码?

这是一个 mongo 查询,可以满足您的要求:

User.aggregate([
  { $group: { _id: { city: "$location.city", country: "$location.country" }, users: { $push: "$$ROOT" }, count: { $sum: 1 } } },
  { $group: { _id: "$_id.country", count: { $sum: "$count" }, cities: { $push: { city: "$_id.city", count: "$count", users: "$users" } } } }
], function(err, results) {
    console.log(results);
});