Предыстория: Я только что изучил основы баз данных и монго на этой неделе.
У меня есть коллекция под названием "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 в течение нескольких часов, но для меня это совершенно не имеет смысла, я думаю, из-за моего нулевого опыта работы с БД в целом.
Для "Первое, что мне нужно сделать, это получить все документы, ProductUId которых соответствует" A90 "или" B90 ".
.find({"OrderItems.ProductUId": {"$in":["A90","B90"]}})
Буду работать. Не знаете, почему вы используете $ elemMatch, это не кажется необходимым?