0

so far in my code bellow I managed to store my data into mongoDB. Now I want to be able to retrieve the data I have stored. As you can see I have been trying but keep on getting an error. With BSON do I have to first decode the data to retrieve it from mongoDB? Any help would be greatly appreciated! (Apologies for the messy code, I am just practicing through trial and error)

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 Answer 1

1

the find_one method should be called on a collection

{'bin-data': Binary(practicedata)} is a query to find a document

coll.find_one({'bin-data': Binary(practicedata)})

Witch means : Find a document in the collection coll where bin-data is equal to Binary(practicedata)

Sign up to request clarification or add additional context in comments.

1 Comment

Great I understand and it's working now, thank you!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.