【发布时间】:2015-07-26 23:35:34
【问题描述】:
我在 MongoDB 的 x 集合中有这样的文档:
{
"_id" : ...
"attrs" : [
{
"key": "A1",
"type" : "T1",
"value" : "13"
},
{
"key": "A2",
"type" : "T2",
"value" : "14"
}
]
}
上面的A1 和A2 元素只是示例:attrs 字段可以包含任意数量的数组元素。
我需要从访问 MongoDB 的多个独立客户端同时访问 attrs 数组。例如,考虑两个客户端,一个想将key标识的元素的value等于“A1”更改为“80”,另一个想将key标识的元素的value更改为等于到“A2”到“20”。有没有使用 MongoDB 操作的紧凑方法?
需要注意的是:
- 客户端不知道
attr数组中每个元素的位置,只知道元素的键值需要修改。 - 在客户空间读取整个
attrs数组,在客户空间搜索要修改的元素,然后用新数组(其中要修改的元素已更改)更新attrs将涉及竞争条件。李> - 客户端还可以添加和删除数组中的元素。因此,在 MongoDB 中进行第一次搜索以定位要修改的元素的位置,然后使用该特定位置更新它通常不起作用,因为元素可能已被添加/删除,从而改变了先前找到的位置。李>
【问题讨论】:
-
某种意义上这个问题是stackoverflow.com/questions/31632070/…的后续问题
标签: mongodb mongodb-query