我尝试了很多东西,但我不是一个真正的MongoDB天才,老实说,我甚至不确定这是否真的可能。我有一些文档,其中的字段有时可以是字符串,有时可以是字符串数组,我想将这两种情况组合在一起。
示例数据:
{ "identifier" : "b553622e-b1c9-4030-8460-a7783214359b", "participants" : [ "p1" ] }
{ "identifier" : "919f77bc-adca-4cbc-ac38-9139552cdb5b", "participants" : [ "p2" ] }
{ "identifier" : [ "919f77bc-adca-4cbc-ac38-9139552cdb5b", "b553622e-b1c9-4030-8460-a7783214359b" ], "participants" : [ "p3" ] }
预期的结果将是这样的:
{ "_id" : [ "919f77bc-adca-4cbc-ac38-9139552cdb5b", "b553622e-b1c9-4030-8460-a7783214359b" ], "participants" : ["p1", "p2", "p3",] }
_id是一个列表并不是真的必要的,这里的主要目标是能够对所有具有匹配标识符的文档进行分组,考虑使用和不使用列表的情况。这可能吗谢谢!
我尝试了$group操作的一些变体,但无法达到我想要的效果。
1条答案
按热度按时间ee7vknir1#
将您的收藏分为两个案例:
identifier
为数组identifier
不是数组对于1,使用
$match
和$type
来获取文档。$unwind
identifier
字段。$unionWith
情况2(与1相同的提取,只需使用$ne
)。执行$group
以获得所需的结果。Mongo Playground