如何使用 BSON (Python) 从 MongoDB 中检索存储的数据?
How to retrieve data stored from MongoDB using BSON (Python)?
到目前为止,在我的代码中,我设法将数据存储到 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
应该在集合上调用 find_one
方法
{'bin-data': Binary(practicedata)}
是查找文档的查询
coll.find_one({'bin-data': Binary(practicedata)})
表示:在集合 coll
中查找文档,其中 bin-data
等于 Binary(practicedata)
到目前为止,在我的代码中,我设法将数据存储到 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
应该在集合上调用 find_one
方法
{'bin-data': Binary(practicedata)}
是查找文档的查询
coll.find_one({'bin-data': Binary(practicedata)})
表示:在集合 coll
中查找文档,其中 bin-data
等于 Binary(practicedata)