在mongodb集合中执行'update'时需要一些关于使用'$ in'的专家建议。 这是一个例子:
db.users.update({userid: {$in: ['1','2','3']}}, {$inc: {mycounter: 1}}, false, true);
在这种情况下使用'$ in'会更好吗?也可以任何人指导我,如果在上面的场景中'$ in'的数组计数/大小有任何限制,那么每次更新可能是10k +用户ID。
谢谢。
答案 0 :(得分:2)
从shell中进行以下简单测试:
for(var i = 0; i < 100000; i++) { db.foo.save({ _id : i, x : 1 }) }
db.foo.count(); // should be 100k
query = []
for(var i = 0; i < 10000; i++) { query.push(i) }
db.foo.update( { _id : {$in:query} }, {$inc : {x:1} }, false, true)
db.foo.find({x:2}).count() // should be 10k
性能合理,似乎可以处理10k的同步更新。
我找不到任何迹象表明数组大小存在硬限制。我认为你可以在这里申请“合理”的限制。即使你可以发出数组为100k的命令,也很难跟踪。
某些驱动程序还允许批量更新命令,这可能更适合您正在执行的操作。