从endus查询mongodb中不带点符号的嵌套搜索

2024-04-20 02:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

对于最终用户应用程序,我需要构建一个GUI来搜索mongodb文档中的值。 我有以下文件:

{'METADATA': {'AttachmentSchema': None,
              'DataSchema': None,
              'Tags': {'AcquisitionTime': '2019-02-05T15:59:37.5862118Z',
                       'DetectorState': {'CameraState': {'ApplyCameraProfile': 'false',
                                                         'ApplyImageOrientation': 'true',
                                                         'ExposureTime': '2200000',
                                                         'Frame': '0,0,2752,2208',
                                                         'ImageOrientation': '3'}},
                       'FocusPosition': '+000000002097.2550',
                       'ImageScaling': {'ImageScaling': {'ImagePixelSize': '4.54,4.54'}},
                       'RoiCenterOffsetX': '+000000000000.0000',
                       'RoiCenterOffsetY': '+000000000000.0000',
                       'StageXPosition': '+000000141526.5820',
                       'StageYPosition': '+000000189329.5000'}},
 '_id': ObjectId('5def7e8c4802b906dd067f97')}

如何访问值为3的键,例如ImageOrientation。 使用点表示法非常简单,如下所示:

db.getCollection("dy").find(
    { 
        "METADATA.Tags.DetectorState.CameraState.ImageOrientation" : "3"
    }
);

但是非IT用户无法编写此查询,因此我希望将用户的输入作为键ImageOrientation和值3,并在后端为用户构建查询,并将结果返回给python gui。我用$elemMatch操作符尝试了一下,但在这个例子中不起作用

否则,我必须为用户反向构建点符号查询,但我认为这不是一个好主意。因为文档结构可以是多种多样的


Tags: 文件用户文档none应用程序mongodbtagsgui
1条回答
网友
1楼 · 发布于 2024-04-20 02:36:40

请使用符合条件的聚合

db.getCollection("dy").aggregate({$match:{"METADATA.Tags.DetectorState.CameraState.ImageOrientation" : "3" }})
   .projection({})
   .sort({_id:-1})
   .limit(100)

相关问题 更多 >