MongoDB:使用'$ in'更新多个

时间:2011-02-22 13:35:50

标签: mongodb mongodb-php

在mongodb集合中执行'update'时需要一些关于使用'$ in'的专家建议。 这是一个例子:

db.users.update({userid: {$in: ['1','2','3']}}, {$inc: {mycounter: 1}}, false, true);

在这种情况下使用'$ in'会更好吗?也可以任何人指导我,如果在上面的场景中'$ in'的数组计数/大小有任何限制,那么每次更新可能是10k +用户ID。

谢谢。

1 个答案:

答案 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的命令,也很难跟踪。

某些驱动程序还允许批量更新命令,这可能更适合您正在执行的操作。