我正尝试使用这里建议的索引从文档内的列表中删除元素
db.example.update({}, [
{$set:{ sequence: {
$concatArrays:[
{$slice:[ "$sequence", P ]},
{$slice:[ "$sequence", {$add:[1,P]}, {$size:"$sequence"}]}
]
}}}
]);
但是,在尝试将查询转换为Spring语法等价物时遇到了问题:
Update update = new Update();
/*how do I pass the slice in the following statement?*/
ArrayOperators.ConcatArrays array = ArrayOperators.ConcatArrays.arrayOf(****);
SetOperators.SetUnion setUnion = SetOperators.SetUnion.arrayAsSet(** slice with add and size***).union(array);
update.set("sequence", setUnion);
谢谢
1条答案
按热度按时间puruo6ea1#
$concatArrays的第二个参数应该如下所示。
不幸的是,
itemCount
只接受int参数,所以这是行不通的。如果数组具有不同的元素,则可以尝试使用此修改后的查询。
Demo
由于需要流水线更新,因此需要使用
AggregationUpdate
。另一种更简单的方法是在javascript中使用$function执行此操作
Demo