【发布时间】:2014-02-12 04:41:53
【问题描述】:
各位, 将以下 yaml 文档插入 MongoDB 时出现问题:
作品:
---
URLs:
- "http://www.yahoo.com":
intensity: 5
port: 80
没有:
---
URLs:
- "foo":
intensity: 5
port: 80
唯一的区别是网址。这是python代码:
stream = open(options.filename, 'r')
yamlData = yaml.load(stream)
jsonData = json.dumps(yamlData)
io = StringIO(jsonData)
me = json.load(io)
... calling classes, etc, then
self.appCollection.insert(me)
错误:
bson.errors.InvalidDocument: key 'http://yahoo.com' must not contain '.'
那么,转换这个 YML 文件的正确方法是什么? :)
谢谢!
【问题讨论】:
-
根据stackoverflow.com/questions/21201661/…,我应该替换'.'在带有 _ 的键中听起来并不有趣。这是正确的方法吗?
-
最好不要在 MongoDB 中使用来自外界的任意键。使用 URL 作为键是有问题的做法。例如,现在您无法索引所有 URL。最好重新设计您的架构,使文档类似于 {"url": "example.com"}。然后你可以在“url”上声明一个索引并搜索它们,现在你不必用其他字符替换点。
标签: python mongodb yaml pymongo