PyMongo вставляет документ BSON в MongoDB

Я хочу вставить новый документ в свою коллекцию 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' не поддерживает назначение элемента

Кто-нибудь знает, в чем тут проблема?


person Onca    schedule 08.07.2015    source источник


Ответы (1)


Вы можете напрямую преобразовать строку в BSON, вам нужен метод json.loads или BSON.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-совместимую дату и время.

person Abhijeet Kasurde    schedule 12.07.2015
comment
На самом деле вы здесь не используете bson, было бы полезно, если бы вы показали, как это сделать. - person rjurney; 19.01.2020