我在尝试更新Mongo中的字段时遇到“字段名称重复不允许使用修饰符”错误。一个例子:
> db.test.insert({test: "test1", array: [0]});
> var testFetch = db.test.findOne({test: "test1"});
> db.test.update(testFetch,
{$push: {array: 1}, //push element to end of key "array"
$pop: {array: -1} //pop element from the start of key "array"
});
Field name duplication not allowed with modifiers
有没有办法执行这个原子操作?我不想为此做两个单独的更新。
答案 0 :(得分:13)
Mongo的票务系统有一个突出的问题:http://jira.mongodb.org/browse/SERVER-1050
看起来好像是今年的。你的场景绝对是一个明智的场景,但它也与一堆边缘案例有关。如果您在空数组上$push
和$pop
怎么办?期待什么?如果您$push
和$pull
,您想要什么?
我不想为此做两次单独的更新。
我知道这样做真的有“代码味道”,但它是否是使用此解决方案的完全阻止程序? “双重更新”是否会彻底摧毁服务器性能?