Документ Python Pymongo Retrive с фильтрами только на основе дочерних документов

Я пытаюсь отфильтровать и извлечь данные из mongodb, используя python/pymongo.

У меня есть данные как ниже формат

[{
    'username':'abc'
    'data': 
        [
            {
                'qty': 220,
                'name': 'Test123',
                'price': 2200,
                'details': 
                    [
                        {
                             'qty': 60,
                             'isa': True,
                             'code': 'SN1'
                         },
                         {
                             'qty': 40,
                             'isa': False,
                             'code': 'SN1'
                         },
                         {
                            'qty': 120,
                             'isa': True,
                             'code': 'SN2'
                         },
                         {
                             'qty': 30,
                             'isa': True,
                             'code': 'SN1'
                         }
                     ]
            },
            {
                'qty': 100,
                'name': 'Test789',
                'price': 3500,
                'details': 
                    [
                        {
                             'qty': 60,
                             'isa': True,
                             'code': 'SN1'
                         }
                    ]
            }
        ]
},
{       
    'username':'xyz'
    'data': []
}]

Хотел получить одну запись из массива на основе приведенных ниже фильтров.

username : 'abc' , data.name : 'Test123' , data.details.isa : True,  data.details.code : 'SN1'

Я могу сделать запрос с синтаксисом ниже, но он даст мне вывод со всеми дочерними элементами data.details

collection.find_one( { "username": 'abc', 'data.name': 'Test123', 'data.details.isa': True, 'data.details.code':'SN1' })

Проблема в том, как получить выходные данные только с отфильтрованными вложенными документами, как указано ниже?

{
    'username':'abc'
    'data': 
        [
            {
                'qty': 220,
                'name': 'Test123',
                'price': 2200,
                'details': 
                    [
                        {
                             'qty': 60,
                             'isa': True,
                             'code': 'SN1'
                         },
                         {
                             'qty': 30,
                             'isa': True,
                             'code': 'SN1'
                         }
                     ]
            }
        ]
}

0 ответов

Другие вопросы по тегам