mongodb批量删除和插入

时间:2015-12-16 12:08:03

标签: python mongodb

我在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()

但得到了错误。

修改

我想使用批量,因为我必须在一个连接中访问两次相同的集合。

1 个答案:

答案 0 :(得分:0)

对于批量删除,您不需要任何特殊内容。这应该没问题:

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

或者,如果您已经提取了以前使用的记录,则可以执行以下操作:

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

您可以使用insert_many在一个查询中插入数据。

db.calendar.insert_many(data)