在MongoDB 2.4中具有DottedFieldName的嵌入式文档上是否要重命名?

我正在尝试将MongoDB 2.4数据库升级到2.6。我进行了升级检查,并收到很多错误消息,告诉我我的字段名称无效。

Document Error: document is no longer valid in 2.6 because DottedFieldName: my@gmail#com.test.coddington.us is not valid for storage.

我正在尝试在文档上运行$ rename操作,但是我认为处理无效字段有麻烦。但是,这些字段以某种方式进入了文档,所以我希望现在有一种引用它们的方法。这是我正在运行的命令:

db.Activity.update({"_id" : ObjectId("5123b2d879d0cdf12e62da99")}, { $rename: {"my@gmail#com.test.coddington.us": "my@gmail#com#test#coddington#us"} })

我认为可以通过使用\.而不是来解决问题.但这没有任何区别。我还尝试通过Unicode表示引用字段名称的句点\u002e我也没有运气。

db.Activity.update({"_id" : ObjectId("5123b2d879d0cdf12e62da99")}, { $rename: {"my@gmail#com\u002etest\u002ecoddington\u002eus": "my@gmail#com#test#coddington#us"} })

我知道$ rename在数组上不起作用,但这似乎就像一个嵌入式文档,很难正确访问。

有谁知道我应该如何访问此字段以对其重命名?

作为参考,这是文档本身的摘要,因此您可以了解其布局。

{
    "_id": ObjectId("5123b2d879d0cdf12e62da99"),
    "deliveryStatuses": {
        "my@gmail#com.test.coddington.us": "sent"
    },
    "version": 1
}
约翰·彼得罗恩

我感到很痛苦-我也有一个MongoDB数据库,其中包含带句点的键-似乎某些驱动程序的早期版本并未阻止插入带有句点的非法键名。

问题是所有的MongoDB工具(或其中的大多数)都不支持使用字段,因此有点麻烦。我为您提供两个建议:

  1. 您可以使用mongoexport导出有问题的集合,
    然后更改文件中有问题的字段。您可能希望他们
    使用mongoimport将数据导入到新的清理集合中。如果文件很小,则可以使用编辑器;如果文件很大,则可以使用awk或sed之类的东西来进行更改-该文件毕竟只是文本。

  2. 您可以编写一小段代码来遍历每个文档,修改有问题的字段名称,然后将结果文档(带有现有的ObjectId)保存到新的集合中。速度较慢,但​​优点是您可以使用任意字符串(例如,每个字段名称中的点数可变)来判断。您选择编码语言,但是在Python中这很简单。

无论哪种情况,在将数据加载到新集合中之后,您都需要重命名旧集合,然后使用旧名称重命名新集合,然后您应该完成操作。

同意@JohnnyHK,您应该长期更改架构,但这至少会清理您拥有的内容,以便在进行架构更改时可以在2.6中使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在文档中引用文档的嵌入式数组的嵌入式数组上查询Doctrine2和MongoDB

来自分类Dev

映射-Symfony2中的Mongodb嵌入式文档

来自分类Dev

映射-Symfony2中的Mongodb嵌入式文档

来自分类Dev

MongoDB聚合查询-重命名嵌入式文档中返回的字段

来自分类Dev

提取嵌入式文档mongodb Symfony2

来自分类Dev

mongodb的嵌入式文档可以在web2py DAL中建模吗?

来自分类Dev

在Mongodb中的嵌入式文档上设置索引

来自分类Dev

查询MongoDB中的嵌入式文档

来自分类Dev

在mongodb中展开嵌入式文档

来自分类Dev

是否有任何查询通过检查mongoDb中嵌套的嵌入式文档的字段来查找文档

来自分类Dev

MongoDB 分别展开 2 个嵌入式数组

来自分类Dev

MongoDB-嵌入式文档列表上的$ addToSet

来自分类Dev

Mongodb node.js 查询嵌入式文档具有多个值的单个字段。

来自分类Dev

从mongodb中的嵌入式文档中删除元素

来自分类Dev

MongoDB $ n在嵌入式文档的某些字段中

来自分类Dev

在MongoDB中更新完整的嵌入式文档

来自分类Dev

在mongodb中更新嵌套的嵌入式文档

来自分类Dev

查询mongodb中的嵌入式文档数组

来自分类Dev

通过angularjs在mongodb中插入嵌入式文档

来自分类Dev

嵌入式文档数组中的MongoDB Aggregate ObjectId

来自分类Dev

在mongodb中更新嵌套的嵌入式文档

来自分类Dev

使用python(pymongo)在mongodb中编辑嵌入式文档

来自分类Dev

如何在 MongoDb 中查询嵌入式文档?

来自分类Dev

mongodb汇总嵌入式文档值

来自分类Dev

如何验证mongodb嵌入式文档

来自分类Dev

mongodb汇总嵌入式文档值

来自分类Dev

返回特定的mongodb嵌入式文档

来自分类Dev

MongoDb $ match用于嵌入式文档

来自分类Dev

何时使用嵌入式文档MongoDB

Related 相关文章

热门标签

归档