【发布时间】:2013-10-04 08:57:43
【问题描述】:
我正在尝试从我的架构中的 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
}
]
}
我有一个 python 循环可以找到 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 中进行搜索和排序(将所有文档都带过来)而不是使用聚合查询来获取每个文档 _id 中每个 iPad 项目的最低价格,然后为每个发布更新?
-
还有什么是'resetCntr',你在哪里设置它?此外,您确实意识到您没有返回已排序的数组项,查找排序指令仅适用于顶级文档顺序。