我在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" } )
我在弄清楚如何删除最后一个条目时遇到了麻烦。有人能帮帮我吗?
答案 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}}})