簡體   English   中英

mongodb批量刪除並插入

[英]mongodb bulk remove and insert

我正在torando中的mongodb學習python

我的數據是

[
 {
    "_id" : ObjectId("5671350061be0b0a6454d68e"),
    "Pid" : "566bb17761be0b1e0059c09d",
    "EndDate" : "10-12-2015",
    "StartDate" : "5-12-2015",
    "Registration" : "TN 64 KS 7777",
    "Status" : "Booked"
     "Period": "12-2015"
 }
 {
    "_id" : ObjectId("5671350061be0b0a6454d68f"),
    "Pid" : "566bb17761be0b1e0059c09d",
    "EndDate" : "20-12-2015",
    "StartDate" : "15-12-2015",
    "Registration" : "TN 64 KS 7777",
    "Status" : "NA"
    "Period": "12-2015"
  }
 {
    "_id" : ObjectId("5671350061be0b0a6454d690"),
    "Pid" : "566bb17761be0b1e0059c09d",
    "EndDate" : "24-12-2015",
    "StartDate" : "21-12-2015",
    "Registration" : "TN 64 KS 7777",
    "Status" : "AOs"
 }
 {
    "_id" : ObjectId("5671350061be0b0a6454d691"),
    "Pid" : "566bb17761be0b1e0059c09d",
    "EndDate" : "30-12-2015",
    "StartDate" : "25-12-2015",
    "Registration" : "TN 64 KS 7777",
    "Status" : "AOr"
    "Period": "12-2015"
 }
]

我已經嘗試過將此代碼批量刪除

 bulk = db.calendar.initializeUnorderedBulkOp()
 bulk.find({"Period": p}).remove()
 bulk.execute()

我還需要插入另一組我之前插入的數據

db.calendar.insert(data)

在數據庫中存儲為

 {
    "_id" : ObjectId("5671350061be0b0a6454d68e"),
    "Pid" : "566bb17761be0b1e0059c09d",
    "EndDate" : "10-12-2015",
    "StartDate" : "5-12-2015",
    "Registration" : "TN 64 KS 7777",
    "Status" : "Booked"
 }
 {
    "Pid" : "566bb17761be0b1e0059c09d",
    "EndDate" : "10-12-2015",
    "StartDate" : "5-12-2015",
    "Registration" : "TN 64 KS 7777",
    "Status" : "Booked"
 }
 {
    "_id" : ObjectId("5671350061be0b0a6454d690"),
    "Pid" : "566bb17761be0b1e0059c09d",
    "EndDate" : "10-12-2015",
    "StartDate" : "5-12-2015",
    "Registration" : "TN 64 KS 7777",
    "Status" : "Booked"
 }
 {
    "_id" : ObjectId("5671350061be0b0a6454d691"),
    "Pid" : "566bb17761be0b1e0059c09d",
    "EndDate" : "10-12-2015",
    "StartDate" : "5-12-2015",
    "Registration" : "TN 64 KS 7777",
    "Status" : "Booked"
 }

和第一組數據

{"Pid" : "566bb17761be0b1e0059c09d",
 "EndDate" : "10-12-2015",
 "StartDate" : "5-12-2015",
 "Registration" : "TN 64 KS 7777",
 "Status" : "Booked"}

被重復存儲。

我想使用bulk操作來解決這個問題。

誰能告訴我該怎么做

我通過這樣做嘗試了

 p = "12-2015"

 bulk = db.calendar.initializeUnorderedBulkOp()
 bulk.find({"Period": p}).remove()
 bulk.insert(data)
 bulk.execute()

但是出錯了。

編輯:

我想使用批量,因為我必須在單個連接中兩次訪問同一集合。

對於批量刪除,您不需要任何特殊的操作。 這應該很好:

db.calendar.remove({"Period": p})

或者,如果您已經獲取了記錄以供更早使用,則可以執行以下操作:

records = db.calendar.find({"Period": p})
records.remove()

您可以使用insert_many在一個查詢中插入數據。

db.calendar.insert_many(data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM