mongodb - "fastmod"在mongodb日志中意味着什么

标签 mongodb

我认为 fastmod 指定了一些操作,例如就地更新。 在我的应用程序中,我使用“$”修饰符通过 _id 进行更新,例如:

$colleciton->update(
    array('_id' => $id),
    array(
        '$inc' => array('hits' => new MongoInt32(1)),
        '$set' => array(
                      'times.gen' => gettimeofday(true),
                      'http.code' => new MongoInt32(200)
         )
    ),
    array('safe'=>false,'multiple'=>false,'upsert'=>false)
);

我有这样的日志:

Wed Jul 25 11:08:36 [conn7002912] update mob.stat_pages query: { _id: BinData } update: { $inc: { hits: 1 }, $set: { times.gen: 1343203715.684896, http.code: 200 } } nscanned:1 nupdated:1 keyUpdates:0 locks(micros) w:342973 342ms

如您所见,在日志中我没有任何“fastmod”标志。没有“移动”标志,因为我在插入时设置了字段“times.gen”和“http.code”,所以填充因子为 1.0。

是我做错了什么,还是我误解了 fastmod 的意思?

最佳答案

您说得对,日志中的“fastmod”表示就地更新。遗漏记录的 fastmod/in-place 操作的一些可能原因:

  1. 您实际上是在设置或递增一个不存在的字段,因此必须添加它,而不是就地操作
  2. 日志只显示慢速查询(默认 >100 毫秒),因此就地查询可能发生得太快而无法记录
  3. 根据日志判断,您似乎使用的是 2.1 或 2.2 - 如果/当您切换到新版本时,消息是否消失了?

就进一步调查而言:

看看the profiler ,尝试不同的设置,注意:分析会增加负载 - 所以请谨慎使用。

您也可以尝试将 slowms 值设置得较低,无论是在启动时还是:

> db.setProfilingLevel(0,20) // slow threshold=20ms

关于mongodb - "fastmod"在mongodb日志中意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11645800/

相关文章:

mongodb - 如何更新文档数组中的对象(嵌套更新)

ruby-on-rails - 通过 AWS opsworks 设置 mongodb

javascript - 其他模式中嵌套文档的引用

javascript - Node js mongodb、mongoose 查找多个项目

c++ - MongoDB C++ 教程程序失败 : 'mongocxx::v_noabi::logic_error'

MongoDB:聚合并展平数组字段

javascript - 如何从 TypeScript NodeJS 应用程序中的 CommonJS 模块导出 Mongoose 模型

MongoDB - 文本字段索引和文本索引之间的区别?

java - MongoDB - 帮助检测集合是否已经存在

javascript - 使用 Async 和 MongoDb 按顺序填充集合文档