#python #mongodb #binary #pymongo #bson
#python #mongodb #двоичный #pymongo #bson
Вопрос:
до сих пор в моем коде ниже мне удавалось сохранять свои данные в MongoDB. Теперь я хочу иметь возможность извлекать данные, которые я сохранил. Как вы можете видеть, я пытался, но продолжаю получать ошибку. С помощью BSON нужно ли сначала декодировать данные, чтобы извлечь их из MongoDB? Любая помощь будет с благодарностью! (Прошу прощения за беспорядочный код, я просто практикуюсь методом проб и ошибок)
import json
from json import JSONEncoder
import pymongo
from pymongo import MongoClient
from bson.binary import Binary
import pickle
#Do this for each
client = MongoClient("localhost", 27017)
db = client['datacampdb']
coll = db.personpractice4_collection #creating a collection in the database
#my collection on the database is called personpractice4_collection
class Person:
def __init__(self, norwegian, dame, brit, german, sweed):
self.__norwegian = norwegian
self.__dame = dame
self.__brit = brit
self.__german = german #private variable
self.__sweed = sweed
# create getters and setters later to make OOP
personone = Person("norwegian", "dame", "brit", "german","sweed")
class PersonpracticeEncoder(JSONEncoder):
def default(self, o):
return o.__dict__
#Encode Person Object into JSON"
personpracticeJson = json.dumps(personone, indent=4, cls=PersonpracticeEncoder)
practicedata = pickle.dumps(personpracticeJson)
coll.insert_one({'bin-data': Binary(practicedata)})
#print(personpracticeJson)
#print(db.list_collection_names()) #get then names of my collections in DB
#retriving data from mongodb
#Retrieving a Single Document with find_one()
print(({'bin-data': Binary(practicedata)}).find_one()) #not working
Ответ №1:
find_one
метод должен вызываться в коллекции
{'bin-data': Binary(practicedata)}
это запрос для поиска документа
coll.find_one({'bin-data': Binary(practicedata)})
Ведьма означает: найти документ в коллекции coll
, где bin-data
равно Binary(practicedata)
Комментарии:
1. Отлично, я понимаю, и теперь это работает, спасибо!