我有一份MongoDB集合的数据,看起来像这样:
{ "_id" : "1", "array1" : [ "1", "2" ] },
{ "_id" : "2", "array2" : [ "1", "3" ] },
{ "_id" : "3", "array1" : [ ] },
{ "_id" : "4", "array2" : [ ] },
{ "_id" : "5" },
{ "_id" : "6", "array1" : [ "3", "4" ], "array2" : [ "5" ] }
我希望找到一个查询,可以简单地返回单个数组中的唯一数组值,如下所示:
{"_id":"theID", "result":["1", "2", "3", "4", "5"]}
这个id并不重要。需要注意的是,array1
、array2
、两者都有或都没有都可以出现在一个文档中,甚至可以为空。我尝试了很多聚合和级联查询命令,但都无法得出所需的响应结果。
$setUnion
将两个数组压缩成一个,然后使用$unwind
展开结果数组,并使用$group
和$addToSet
来对它们进行分组,但不幸的是,$setUnion
只有在文档中同时存在这两个字段时才能正常工作。 - Philipp