用户曾去过的团体位置

时间:2018-10-04 08:28:58

标签: mongodb group-by aggregation-framework

我正在徘徊,是否有可能收集用户访问过的所有记录地点并获得这些地点的列表,但是如果用户去过相同地点,则只能在输出中获得该地点一次?

这是我的示例数据:

{"userId": "abc123", "visited": "Berlin"}
{"userId": "abc123", "visited": "Copenhagen"}
{"userId": "abc123", "visited": "New York"}
{"userId": "abc123", "visited": "Berlin"}

现在,如果我这样收集它,我将两次到达柏林:

var allVisits = db.Collection('visits').find( { "userId" : "abc123" };

var allCities = [];

我想得到一个包含所有城市的阵列,但是只有一次。我该怎么办?

希望获得帮助并提前致谢:-)

1 个答案:

答案 0 :(得分:1)

您可以在$addToSet阶段使用$group聚合运算符。

db.Collection('visits').aggregate(
  { "$match": { "userId" : "abc123" }},
  { "$group": {
    "_id": null,
    "places": { "$addToSet": "$visited" }
  }}
)