我在mongodb中有这个简单的JSON:
{
"pwd_list": [
{
"pwd": "password1",
"pwd_date": str(int(time.time()))
},
{
"pwd": "password2",
"pwd_date": str(int(time.time()))
},
]
}
我只想尝试使用索引更新 pwd_list 数组中的一行......
我试图使用mongodb的$位置,但似乎只能用$ push ...但我不想推!
(我使用pymongo)
所以我尝试了不同的东西:
self.collection.update({"email": "email"},
{
"$set": {
"pwd_list": {
"temp_passwd": "NEW VALUE",
"temp_date": "str(int(time.time()))"
}
}
})
但它没有按预期工作。 (上面的例子是在对象中转换数组...)
如果不可能,我至少可以更新第一行(总是这一行)吗?
先谢谢!
答案 0 :(得分:1)
这样做有两种选择。 如果要搜索要更改的特定项目,则应执行以下操作:
self.collection.update({"email": "email", "pwd_list.pwd": "Password2"},
{
"$set": {
"pwd_list.$": {
"pwd": "NEW VALUE",
"pwd_date": "str(int(time.time()))"
}
}
})
如果您想要更改特定项目,并且您知道项目在数组中的位置,您应该执行以下操作(在我的示例中,我正在更改第一项):
self.collection.update({"email": "email"},
{
"$set": {
"pwd_list.0": {
"pwd": "NEW VALUE",
"pwd_date": "str(int(time.time()))"
}
}
})
您可以在this page上找到有关此内容的更多详情。