我有一个相当直接的数据库结构,我想用MongoDB创建。我的结构是这样的:
{url: value,
users: {user_id: value}}
示例文档可能如下所示:
^{pr2}$我正在使用PyMongo更新我的数据库并添加如上所示的文档。我可以成功地将数据添加到我的数据库中,但我似乎无法复制上述数据结构。在
for d in data:
foo.update(
{'id': d.get('url')},
{'$addToSet' :{'users': {d.get('user'): 'NaN'}}},
upsert=True)
上面的代码插入,但是“user”结构不是我想要的。我想:
users: {'billy': 'NaN', 'tommy': 'NaN'}
我得到:
users : [ { 'billy' : "NaN" }, { 'tommy' : "NaN" } ]
有人能帮忙吗?谢谢你的时间。在
根据我上面的评论,我建议不要嵌入文档,而是使用数组。以下方法会很好地工作:
这样您就可以利用
^{pr2}$$push
、$pull
等以及$addToSet
。对于后者,您可以添加如下新用户:现在假设您只想为给定用户增加一个值,您也可以很容易地做到:
要想了解更多关于我提出的模式可以做的事情,我将阅读this
我对mongo不是很了解,但是
$addToSet
建议有一个用户集合,而你似乎需要将密钥添加到users对象。在我不知道在upsert的例子中是否有mongo的捷径
foo['users']['billy'] = 'NaN'
相关问题 更多 >
编程相关推荐