【发布时间】:2014-03-28 08:27:10
【问题描述】:
我在 Ubuntu 12.04.1 上运行 mongodb server 2.4.5。我的应用程序通过 Morphia 层 (0.104) 和 mongo-java-driver (2.12-rc2) 写入数据库。事情很好。但是在 /var/log/mongodb/mongodb.log 中有如下条目:
3 月 28 日星期五 07:45:12.614 [conn3621] 更新 messdatenDB.meterdata 查询:{ _id:"53351a789932d0c43be306c3"} 更新:{_id:"53351a789932d0c43be306c3",数据:1395910012296,0000000""SGHType:4" ", deviceID: "DC006487", mandantID: "520dee1299322f8346c57fd6", value: 0.7000000000000001, unit: "V", version: 1 } idhack:1 nupdated:1 upsert:1 keyUpdates:0 locks(micros) w:39 318ms F
我只为这个 db/collection 获取这些条目。有时每隔几分钟,有时间隔几个小时。
“messdatenDB.meterdata”集合定期被写入新数据对象 - 永远不会像日志文件所说的那样进行更新。这是否意味着创建了双ID?谁能给我一个提示,日志文件条目可能会告诉我什么?感谢您的任何建议!
【问题讨论】:
-
James 在下面的回答是关于慢查询位的正确答案。至于为什么您在更新中看到 _id,我们必须看到一些代码。
-
OK 代码很简单:
MeterDataEntity mvalue = new MeterDataEntity();... fill mvalue ...EntityDAO<MeterDataEntity> dao = MongoDBServer.getInstance().getDaoFactory().map(MeterDataEntity.class, null); dao.save(mvalue);MeterDataEntity 是一个 POJO,带有 morphia 注释和类型的唯一 id 对象 ID。 EntityDAO 派生自 morphia 类的 BasicDAO。