我的 mongodb 数据库中集合中字段的类型是 unicode 字符串。该字段目前在集合中的任何文档中都没有与之关联的任何数据。我不希望类型是字符串,因为我想使用 pymongo 从我的 python 代码中添加子字段。
集合中已经有很多记录。那么,对于集合中的所有文档,是否可以将字段的类型更改为类似于 python 中的字典?
请帮忙谢谢
当然,只需创建一个迭代当前集合的脚本,读取现有值并用新值覆盖它(在您的情况下为嵌入文档)。您只需为该字段设置一个新值即可更改该字段的类型。例如将字符串字段设置为整数字段:
db.test.update({field:"string"}, {$set:{field:23}})
我不确定“字段的类型......是一个字符串”和“这个字段......没有任何数据”是什么意思。您的意思是该字段存在于您的文档中,但设置为空字符串还是null
?
无论哪种情况,MongoDB 都是“无模式的”,这意味着它不会对您的文档强制执行任何特定模式,即使集合中的所有文档都具有相同的结构。
如果您使用的框架需要您声明模式(MongoEngine、mongokit 等),那么您必须在使用框架时做出相应的更改,我们需要知道您使用的是什么框架.
如果您只是使用纯 pymongo,则可以根据需要更改文档。假设您有一个类似的文档:
{name: "dcrosta", address: null }
你想制作address
一个子文档。您可以在一次更新中完成所有这些操作:
db.people.update({address: None}, {'$set': {'address': {
'street1': None,
'street2': None,
'city': None,
'state': None,
'zip': None,
}}}, multi=True)
(这是在 pymongo 中,确切的语法在 shell 或其他驱动程序中会有所不同)