我正在使用带有Node.js框架的MongoDB。
有一种奇怪的行为是某些文档没有插入到db中,但从orm的角度来看,err = null
的回调中没有错误Collection.create()
和{{1}的新文档返回。当我尝试在db中搜索_id
时 - 找不到文档。
我尝试手动将新文档插入db并且成功了。
有没有办法可以从db的角度跟踪这些操作?有些命令列出最近的请求及其结果..?
答案 0 :(得分:1)
您可以为所有操作启用分析:
db.setProfilingLevel(2)
然后,查看system.profile
集合,了解发生了什么。 system.profile
是一个上限集合,可以像任何其他集合一样进行搜索。分析可能很嘈杂,最终您必须更改system.profile
集合的大小
db.setProfilingLevel(0)
db.system.profile.drop()
db.createCollection( "system.profile", { capped: true, size:4000000 } )
db.setProfilingLevel(2)
答案 1 :(得分:0)
在MongoDB中跟踪错误的最值得注意的方法是使用--diaglog
选项:http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption--diaglog,其级别可能为3
,但1
可能就足够了
正如@Neil所指出的那样,不幸的是,从2.6开始,这已被弃用。
目前唯一的方法是通过@Rauls回答写出MongoDB执行的所有操作,然后使用如下查询:
db.system.profile.find({op:{$in:['update', 'insert', 'remove']}});
并且可能调整用于分析的上限集合:http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/#profiler-overhead以捕获您想要的数量。