特殊MongoDB查询

特殊MongoDB查询,mongodb,mongodb-query,Mongodb,Mongodb Query,在我的MongoDB数据库中,每个记录都有一个数组parent\u archive\u UID,其中包含一个或多个UID。作为对我的查询的响应,我想为这个数组中的每个元素获取一条单独的记录以及另一个字符串filename.value 目前我有以下疑问: db.files.aggregate( [ { $match: {'filename.value': {'$exists': true, '$not': {'$size': 0}}}}, { $group: {'_id': '$parent_a

在我的MongoDB数据库中,每个记录都有一个数组parent\u archive\u UID,其中包含一个或多个UID。作为对我的查询的响应,我想为这个数组中的每个元素获取一条单独的记录以及另一个字符串filename.value

目前我有以下疑问:

db.files.aggregate( [ 
{ $match: {'filename.value': {'$exists': true, '$not': {'$size': 0}}}},
{ $group: {'_id': '$parent_archive_uids', 'Filename': {'$push': '$filename.value'},}},
] )
这给了我以下结果:

{
    "_id" : [ 
        "4e1dd3d462764bc067cf398e70cfa16a653f39badbc5687fa61b6108bf0f3679_27288071", 
        "bfa178455b9bba5e748897d41f183d3837a51243d0364374c1fa8eea376cab27_27288067"
    ],
    "Filename" : [ 
        "File1"
    ]
}
但是我想为数组中的每个元素创建一个单独的记录,如下所示:

{
    "_id" : [ 
        "4e1dd3d462764bc067cf398e70cfa16a653f39badbc5687fa61b6108bf0f3679_27288071"
    ],
    "Filename" : [ 
        "File1"
    ]
}
{
    "_id" : [ 
        "bfa178455b9bba5e748897d41f183d3837a51243d0364374c1fa8eea376cab27_27288067"
    ],
    "Filename" : [ 
        "File1"
    ]
}
对于MongoDB查询,这可能吗?我试过了,但失败了。

您不需要$group阶段。根据经验,$group可以创建数组,而$unwind可以删除数组

您可以在$match之后添加阶段:

{$unwind:$parent_archive_uids} 这将为父归档uids数组中的每个条目创建一个文档,该数组包含文档中的所有其他字段。如果还希望将字段重命名为所需的输出名称,则可以使用和