Python - 删除MongoDB中文档中的特定条目

时间:2017-03-08 18:18:20

标签: python mongodb pymongo

我在MongoDB中有以下条目。我正在使用PyMongo并使用insert_one命令将其存储到数据库中:

{
    "_id" : ObjectId('ffffffffffffffffff'),
    "Drink" : "Lemonade"
    "Prices per dates" : [
        {
            "Date" : "02-22-2017",
            "Price" : "5.00"
        },
        {
            "Date" : "02-21-2017",
            "Price" : "6.00"
        },            
        {
            "Date" : "02-20-2017",
            "Price" : "7.00"
        }
     ]
}

我想在前面插入新的日期和价格,然后删除最后一个条目。这是我要找的结果:

{
    "_id" : ObjectId('ffffffffffffffffff'),
    "Drink" : "Lemonade"
    "Prices per dates" : [
        {
            "Date" : "02-23-2017",
            "Price" : "4.00"
        },
        {
            "Date" : "02-22-2017",
            "Price" : "5.00"
        },            
        {
            "Date" : "02-21-2017",
            "Price" : "6.00"
        }
     ]
}

到目前为止我的解决方案

我想出了如何通过python插入一个条目:

db.collection.insert_one({"Drink":"Lemonade", "Prices per dates": { "Date" : "02-22-2017", "Price" : "5.00" } )

我在弄清楚如何删除最后一个条目时遇到了麻烦。有人能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

关注the example for $push with $each。您可以执行类似这样的操作,将新的子文档推送到数组的末尾,然后从数组的前面弹出,直到其长度为3:

db.collection.update_one(
    {"_id": _id},
    {'$push': {
        'Prices per dates': {
            '$each': [{
                "Date": "02-23-2017",
                "Price": "4.00"
            }],
            '$slice': -3}}})