【发布时间】:2020-07-19 07:22:03
【问题描述】:
我对 MongoDB 还很陌生。我会尽力在这里总结手头的问题。我已经获得了三种不同的 JSON 模式,我想使用 python 在 MongoDB 中创建这个模式。我的代码如下:
import pymongo
client = pymongo.MongoClient("mongodb://127.0.0.1:27017/")
mydb=client['UserDetails']
information = mydb.Userinformation
user_schema = {
'firstName': {
'type': 'string',
'minlength': 1,
'required': True,
'coerce': str.capitalize
},
'lastName': {
'type': 'string',
'minlength': 1,
'required': True,
'coerce': str.capitalize
},
'email': {
'type': 'string',
"required": False,
"coerce": str,
"nullable": True
},
'phoneNo': {
'type': 'integer',
'required': True,
'unique': True
},
'userId': {
'type': 'integer',
'required': True,
'unique': True
},
'patientId': {
'type': 'integer',
'required': True,
'unique': True
},
'age': {
'type': 'integer'
},
"userStatus": {
"type": "integer",
"nullable": True
}
}
information.insert_many(user_schema)
上面的代码行给我一个错误如下
TypeError: document 必须是 dict、bson.son.SON、bson.raw_bson.RawBSONDocument 或继承自 collections.MutableMapping 的类型的实例
information.insert_one(user_schema)
尝试这样做会给我一个错误
无法编码对象:“str”对象的“capitalize”方法,类型:“method_descriptor”类
任何关于如何使用 python 在 mongoDB 中创建此模式的帮助将不胜感激!
【问题讨论】:
-
您希望这是数据库架构吗?或者您只是想将该数据插入到集合中?
-
是的,我希望它是一个数据库模式。但我想我在这里要做的是插入到一个集合中。简单的插入不会起作用吗?如果不能,请指导制作数据库架构。
-
str.capitalize是一个无法编码并存储在数据库中的函数。这就是您收到 BSON 错误的原因。该值需要有效的 python 数据类型。 -
你试过
mongoengine吗?请参阅此处的指南realpython.com/introduction-to-mongodb-and-python/…
标签: python json mongodb schema