Python 我们如何在MongoDB中编写查询来选择名称不同的字段?

Python 我们如何在MongoDB中编写查询来选择名称不同的字段?,python,json,mongodb,Python,Json,Mongodb,我有一个很大的JSON文件,我使用MongoPy来解析它。我想选择一些字段并将它们保存在一个新的JSON文件中。有些字段名称不同。例如,在下面的JSON示例中,我想为所有ID选择Detials: item = { "act": { "id1":[ {"Detials": {...} "Values": {...} }, {"Detials": {

我有一个很大的JSON文件,我使用MongoPy来解析它。我想选择一些字段并将它们保存在一个新的JSON文件中。有些字段名称不同。例如,在下面的JSON示例中,我想为所有ID选择Detials:

item = { "act": {
             "id1":[ {"Detials": {...}
                     "Values": {...}
                     },
                     {"Detials": {...}
                     "Values": {...}
                     },
                   ]
             "id2":[ {"Detials": {...}
                     "Values": {...}
                     },
                     {"Detials": {...}
                     "Values": {...}
                     },
                   ]
            }

      };

不,很难使用MongoDB查询具有不同名称的字段

如果稍微重新构造数据,将act转换为子文档数组,则可以在每个子文档中放置id1标记,这将使查询所有详细信息变得更容易。例如,像这样:

{ 行为:[ { id:1, 数据:[ { 详情:{…}, 值:{…} }, { 详情:{…}, 值:{…} } ] }, { id:2, 数据:[ { 详情:{…}, 值:{…} }, { 详情:{…}, 值:{…} } ] } ] } 如果您的数据在此结构中,您可以非常轻松地进行如下查询:

db.collection.aggregate[ {$unwind:{$act}, {$group:{u id:allTheDetails,Detials:{$push:$act.data.Detials}} ]
这将返回每个Detials块的数组。

添加一个有效的json项。感谢您的回答。如何将act转换为子文档数组?JSON文件包括大约100万个act和大约400万个ID。所以,与此同时,我在寻找一个最佳的方法。@YNr好吧,这是一个不同的问题:这个问题太大了,无法在这里的评论中得到回答。有很多方法可以进行静态重构,但是您也必须重新设计应用程序。如果我们不考虑字段的数量,如何将ACT转换成子文档数组?