mongodb更新数组元素的问题
假设文档如下
{
id:7778888
itemList:[{type:1,count:10},{type:2,count:12},{type:21,count:21}],
nick:"hehe"
}
有两个问题:
1.现在要向该文档的itemList添加元素{type:90,count:23} 如果itemList中已经有元素的type为90则直接将该元素的count加23,如果没有则直接将该元素添加到itemList中,要怎么用一条更新实现这个功能呢?
2.假设该文档的itemList中没有type为90的元素,现在向itemList中添加元素{type:90,count:23}, 同时更新type为2的元素的count减10,我是这样做的,但是报错了:
testmodel.update(
{id:7778888},
{
$inc:{"itemList.$[elem].count":-10},
$push:{itemList:{type:90,count:23}}},
{arrayFilters:[{"elem.type":2}]}
);
mongoError: Updating the path 'itemList.$[elem].count' would create a conflict at 'itemList'
有人知道这是为啥吗?
3 回复
来人关注下吧,没人遇到类似的问题吗?
来自酷炫的 CNodeMD
仔细看下文档,太久没写MongoDB了
@dengnan123 第一个问题在栈溢出上找到了同样的问题,只能用两天语句来实现。但第二个问题真不知道为啥
来自酷炫的 CNodeMD