Как правильно запросить вложенный документ MongoDB с помощью Python?

1

Предыстория: Я только что изучил основы баз данных и монго на этой неделе.

У меня есть коллекция под названием "orderstest" из 10K документов со следующей базовой формой:

{
    "_id": {
        "$oid": "2309823082039482"
    },
    "Order": "12345678920000",
    "Client": "Client Name Inc.",
    "OrderUId": "3452-2342-9393-0100",
    "OrderItems": [
        {
            "Client": "Client Name Inc.",
            "Details": [
                {
                    "Key": "EnterpriseCode",
                    "Value": "XYZ1000"
                },
                {
                    "Key": "AWSRegion",
                    "Value": "Frankfurt"
                },

            ],
            "ProductUId": "A90",
            "OrderItemUId": "ABC1000",
        }
    ],
    "__v": 0
}

Мне нужно создать скрипт python3 для сравнения этих записей с некоторыми данными AWS. Первое, что мне нужно сделать, это получить все документы, ProductUId которых соответствует "A90" или "B90".

Я выполнил этот запрос в оболочке mongo, и он сработал:

db.orderstest.find({
  OrderItems:{$elemMatch: {
                     ProductUId:"A90"
                 
                } 

}
})

Но когда я пытаюсь поместить это в свой скрипт, он выдает эту ошибку:

    'OrderItems':{'$elemMatch': {
                               ^
SyntaxError: invalid character in identifier

Кроме того, мне нужно создать условие всех "A90" или "B90", которые читают документацию и пытаются настроить несколько вещей, которые я никогда не мог реализовать. Я также должен сказать, что я прошел через документы MongoDB в течение нескольких часов, но для меня это совершенно не имеет смысла, я думаю, из-за моего нулевого опыта работы с БД в целом.

Теги:
python-3.x
pymongo

1 ответ

0
Лучший ответ

Для "Первое, что мне нужно сделать, это получить все документы, ProductUId которых соответствует" A90 "или" B90 ".

.find({"OrderItems.ProductUId": {"$in":["A90","B90"]}})

Буду работать. Не знаете, почему вы используете $ elemMatch, это не кажется необходимым?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню