更改mongodb数据库中集合中字段的类型

时间:2011-07-22 11:50:20

标签: python mongodb pymongo

我的mongodb数据库中集合中的字段类型是unicode字符串。该字段当前在集合中的任何文档中都没有与之关联的任何数据。 我不希望类型是字符串因为,我想使用pymongo从我的python代码中添加子字段。

该集合中已经有很多记录。那么,对于集合中的所有文档,是否可以将字段类型更改为python中的字典?

请帮助 谢谢

2 个答案:

答案 0 :(得分:1)

当然,只需创建一个迭代当前集合的脚本,读取现有值并用新值覆盖它(在您的案例中为嵌入式文档)。只需为该字段设置新值即可更改字段的类型。例如。将字符串字段设置为整数字段:

db.test.update({field:“string”},{$ set:{field:23}})

答案 1 :(得分:1)

我不确定你的意思是“字段的类型......是一个字符串”和“这个字段......没有任何数据”。您的意思是该字段存在于您的文档中,但是设置为空字符串或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或其他驱动程序中略有不同)