在 mongodb 集合中执行 'update' 时需要一些关于使用 '$in' 的专家建议。这是一个例子:
db.users.update({userid: {$in: ['1','2','3']}}, {$inc: {mycounter: 1}}, false, true);
在这种情况下使用 '$in' 会更好吗?如果在我的上述场景中“$in”的数组计数/大小有任何限制,那么任何人都可以指导我,每次更新可能是 10k+ 用户 ID。
谢谢你。
在 mongodb 集合中执行 'update' 时需要一些关于使用 '$in' 的专家建议。这是一个例子:
db.users.update({userid: {$in: ['1','2','3']}}, {$inc: {mycounter: 1}}, false, true);
在这种情况下使用 '$in' 会更好吗?如果在我的上述场景中“$in”的数组计数/大小有任何限制,那么任何人都可以指导我,每次更新可能是 10k+ 用户 ID。
谢谢你。
从 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 的数组发出命令,也很难跟踪。
一些驱动程序还允许批量更新命令,这可能更适合您的工作。