PyMongo将BSON文档插入MongoDB

时间:2015-07-08 21:25:05

标签: mongodb pymongo bson

我想在MongoDB集合中插入一个新文档。

我的第一个输入是一个字符串,显示在这里:

{
    "date" : ISODate("2013-10-06T18:11:26.329Z"),
    "engines" : {},
    "expiration_date" : ISODate("2013-10-06T18:11:36.329Z"),
    "file_name" : "elad.elad",
    "scan_status" : "TEST",
    "task_id" : "4ce4ae9e-ef0a-476a-8189-92a5bfe328bd"
}

我正在用这个字符串创建一个bson.BSON对象:

b=bson.BSON(doc)

我正在尝试将它插入MongoDB中的我的集合中:

collection.insert(b)

但是我收到以下错误: TypeError:'str'对象不支持项目分配

有人知道这里有什么问题吗?

1 个答案:

答案 0 :(得分:1)

您可以直接将字符串转换为BSON,您需要json.loadsBSON.encode方法。

您可以使用以下代码:

import datetime
from pymongo import MongoClient

db = MongoClient().test
collection = db.some

doc = {
    "date" : datetime.datetime.strptime("2013-10-06T18:11:26.329Z", "%Y-%m-%dT%H:%M:%S.%fz"),
    "engines" : {},
    "expiration_date" : datetime.datetime.strptime("2013-10-06T18:11:36.329Z","%Y-%m-%dT%H:%M:%S.%fz"),
    "file_name" : "elad.elad",
    "scan_status" : "TEST",
    "task_id" : "4ce4ae9e-ef0a-476a-8189-92a5bfe328bd"
}
collection.insert(doc)

这里我使用datetime对象将您的字符串日期转换为Python兼容日期时间