MongoDb包含下一组数据
[{"user": "a", "domain": "some.com"},
{"user": "b", "domain": "some.com"},
{"user": "b1", "domain": "some.com"},
{"user": "c", "domain": "test.com"},
{"user": "d", "domain": "work.com"},
{"user": "aaa", "domain": "work.com"},
{"user": "some user", "domain": "work.com"} ]
我需要选择按域筛选的第一个项目,结果中不超过2个相同的域。 mongo之后的查询结果应该如下所示
[{"user": "a", "domain": "some.com"},
{"user": "b", "domain": "some.com"},
{"user": "c", "domain": "test.com"},
{"user": "d", "domain": "work.com"},
{"user": "aaa", "domain": "work.com"}]
只有两个结果具有相同的域,必须跳过其他具有相同域的结果。这是否可能与$aggregation、$filter或其他内容有关
这是一种按域分组并仅获取前N个(示例中为2个)用户数据的方法吗?例如:
[{"domain": "some.com", "users": [a, b]}]
所以
{"user": "b1", "domain": "some.com"} will be skip
执行MongoDB聚合可能会得到所需的结果
它包括四个阶段:
1.我们按
domain
字段分组,并累积到具有相同域名的data
文档中2.然后,我们将拼接阵列设置为每个域最多2个项目
3.我们使用
$unwind
操作符展平data
字段4.我们使用
$replaceRoot
运算符返回原始文档结构MongoPlaygroundPymongo Aggregation
相关问题 更多 >
编程相关推荐