【发布时间】:2012-05-24 07:32:59
【问题描述】:
我想用 MongoDB 创建一个相当简单的数据库结构。我的结构如下所示:
{url: value,
users: {user_id: value}}
示例文档可能如下所示:
{'url': 'http://stackoverflow.com/', users: {'billy': 12, 'tommy': 2}}
我正在使用 PyMongo 更新我的数据库并添加文档,如上所示。我可以成功地将数据添加到我的数据库中,但我似乎无法复制上述数据结构。
for d in data:
foo.update(
{'id': d.get('url')},
{'$addToSet' :{'users': {d.get('user'): 'NaN'}}},
upsert=True)
上面的代码插入,但“用户”结构不是我想要的。我想要:
users: {'billy': 'NaN', 'tommy': 'NaN'}
我得到:
users : [ { 'billy' : "NaN" }, { 'tommy' : "NaN" } ]
有人可以帮忙吗?感谢您的宝贵时间。
【问题讨论】:
-
我不明白。你会得到一个很好的用户对象列表。问题出在哪里?
-
$addToSet仅适用于数组,即lists,不适用于嵌入文档,即dicts。要执行您想要执行的操作,您必须编写 python 逻辑,因为没有更新操作可以使用$set执行 upsert。或者,您可以决定将users放入一个数组中。 -
好的,谢谢。那么在 Mongo 中,这种数据的最佳数据结构是什么?