2017-03-08 9 views
0

MongoDBには次のエントリがあります。私はPyMongoを使用していると私はデータベースにこれを保存するためにinsert_oneコマンドを使用:Python - MongoDBで文書内の特定のエントリを削除する

{ 
    "_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" 
     } 
    ] 
} 

は私が前面に新しい日付と価格を挿入し、最後のエントリを削除します。私はとのトラブルを抱えている

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

を:私のpython経由エントリを挿入する方法を考え出し

これまで

{ 
    "_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" 
     } 
    ] 
} 

私の解決策:これは私が探しています結果です最後のエントリだけを削除する方法を考え出す。誰かが私を助けてくれますか?

答えて

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}}}) 
+0

'$ slice'の$($)という接頭辞フィールド '$ slice'がストレージに有効でないというエラーが表示されるようです。これは何を意味するのでしょうか? – ss1111

0

最初$positionに挿入するために、クエリの下に試すことができますし、 $slice最初の3つのエントリを保持します。

db.collection.update_one({ 
    "_id": _id 
}, { 
    $push: { 
     "Prices per dates": { 
      $each: [{ 
       "Date": "02-23-2017", 
       "Price": "4.00" 
      }], 
      $position: 0, 
      $slice: 3 
     } 
    } 
}) 
関連する問題