Mongodb 递增嵌套数组中的所有元素
我有这样一份文件:Mongodb 递增嵌套数组中的所有元素,mongodb,Mongodb,我有这样一份文件: { _id: ".....", messages: [ { .... votes: 2 }, { .... votes: 2 } ] } 我想在同一请求中增加数组中的所有投票字段 怎么做?$运算符仅选择第一个元素 谢谢大家! 您可能需要对一些JS循环执行此操作: db.collection.find(
{
_id: ".....",
messages: [
{
....
votes: 2
},
{
....
votes: 2
}
]
}
我想在同一请求中增加数组中的所有投票字段
怎么做?$运算符仅选择第一个元素
谢谢大家! 您可能需要对一些JS循环执行此操作:
db.collection.find( { "_id": SOME_ID } ).forEach( function( doc ) {
for ( i in doc.messages ){
doc.messages[ i ].votes += 1;
}
db.collection.save( doc );
} );
我在这里所做的是迭代游标中的每个文档,并迭代它的messages属性,将每个元素的vots属性递增一。问题在于以下情况:user1想要递增。但是在递增过程中,user2也希望递增相同的值。因此,user1和user2找到相同的初始文档,并将选票增量保存为1。User1保存,然后user2保存并擦除User1增量。你明白这个问题吗?@jeremieca-是的。但是这些对相同文档的同步请求和更新是在mongo级别处理的。您不必担心对同一资源的并行请求。如果存在冲突,mongodb将选择de最高版本。所以这是个问题。这就是为什么我想使用$inc。我不明白你说的最高版本是什么意思。Mongo将按照请求到达服务器的顺序处理请求。