我有一些更新的脚本,mongoDb记录如下所示:
{ "_id" : "c12345", "arr" : [
{
"i" : 270099850,
"a" : 772,
},
{
"i" : 286855630,
"a" : 622,
}
] }
Run Code Online (Sandbox Code Playgroud)
脚本在对象的"arr"数组中追加元素,使用"pushAll",它工作得很好并且非常快.
我的要求:1.继续修改这些对象,但一旦arr的大小超过1000就处理它们.
当前实现:1.脚本A从某处获取一些数据,并使用"_id"字段在另一个集合中查找该对象,并将该数据附加到"arr"数组中.
当前的瓶颈:1.我希望更新脚本运行得非常快.Upsert很快,但每条记录的查找和修改操作都比较慢.
想法:1.不要在脚本中处理EXCEEDED项,而是在对象中设置bool标志,并使用单独的Data Cleaner脚本处理它.(但这也要求我在做UPSERT之前找到对象).
您可以建议任何其他清洁有效的想法?谢谢 .
在mongo的2.3.2版本中添加了一个新功能.现在有一个$ slice可用于将数组保持为固定大小.
例如:
t.update( {_id:7}, { $push: { x: { $each: [ {a:{b:3}} ], $slice:-2, $sort: {'a.b':1} } } } )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1490 次 |
| 最近记录: |