Я пытаюсь удалить самую низкую цену с iPad в моей схеме. Я знаю, как его найти, используя пимонго, но я не могу его удалить. Вот моя схема:Pymongo: удалить элемент из массива
{
"_id": "sjobs",
"items": [
{
"type": "iPod",
"price": 20.00
},
{
"type": "iPad",
"price": 399.99
},
{
"type": "iPad",
"price": 199.99
},
{
"type": "iPhone 5",
"price": 300.45
}
]
}
{
"_id": "bgates",
"items": [
{
"type": "MacBook",
"price": 2900.99
},
{
"type": "iPad",
"price": 399.99
},
{
"type": "iPhone 4",
"price": 100.00
},
{
"type": "iPad",
"price": 99.99
}
]
}
У меня есть цикл питона, который находит самую низкую цену продажи для IPad:
cursor = db.sales.find({'items.type': 'iPad'}).sort([('items', pymongo.DESCENDING)])
for doc in cursor:
cntr = 0
for item in doc['items']:
if item['type'] == 'iPad' and resetCntr == 0:
cntr = 1
sales.update(doc, {'$pull': {'items': {item['type']}}})
Это не работает. Что мне нужно сделать, чтобы удалить самую низкую цену iPad?
Как общий комментарий: «не работает», как правило, недостаточно информации. –
Извините. Я не получаю сообщение об ошибке. Программа успешно работает, но ничего не происходит с моей схемой. Следовательно, мой stmt: «не работает». –
есть ли причина, по которой вы выполняете поиск и сортировку на python (перенося все документы) вместо того, чтобы использовать запрос агрегации, чтобы получить самую низкую цену за каждый элемент iPad в каждом документе _id, а затем выпустить обновление для каждого? –