当前位置:嗨网首页>书籍在线阅读

04-获取数据库写入请求的状态

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.3 获取数据库写入请求的状态

如果检测到写入错误,这种错误将被存储,并可使用Database对象的命令getLastError或方法getLastError()来获取。

如果对Database对象执行的最后一次请求返回的是true,方法getLastError()将返回null,否则将返回一个包含错误消息的字符串。例如,要检查文档添加操作的情况,可使用类似于下面的代码:

mongo = new Mongo('localhost');
wordsDB = mongo.getDB('words');
wordsDB.runCommand( { getLastError: 1, w: 1, j: true, wtimeout: 1000 } );
wordsColl = wordsDB.getCollection('word_stats');
wordsColl.insert({word:"the"});
lastError = wordsDB.getLastError();
if(lastError){
   print("ERROR: " + lastError);
}

命令getLastError返回一个对象,其中包含详细得多的错误消息,如最后一次请求的状态、修改的文档数、错误消息等。表8.3列出了命令getLastError返回的对象的属性。

下面是一个使用命令getLastError的示例:

mongo = new Mongo('localhost');
wordsDB = mongo.getDB('words');
wordsDB.runCommand( { getLastError: 1, w: 1, j: true, wtimeout: 1000 } );
wordsColl = wordsDB.getCollection('word_stats');
wordsColl.insert({word:"the"});
results = wordsDB.runCommand( { getLastError: 1});
if(results.err){
   print("ERROR: " + results.err);
}
表8.3  Database对象的命令getLastError返回的对象的属性

| 属性 | 描述 | | :----- | :----- | :----- | :----- | | ok | 布尔值。在命令getLastError成功完成了时为true | | err | 描述错误的字符串,在最后一个请求没有发生错误时为null | | code | 最后一次操作的错误代码 | | connectionId | 连接的ID | | lastOp | 在最后一个操作是对副本集成员的写入或更新操作时,为存储请求修改的oplog中的optime时间戳 | | n | 最后一次操作是更新或删除操作时,为更新或删除的文档数 | | updateExisting | 布尔值。如果最后一个操作为更新操作,且至少影响到一个文档,同时没有导致upsert时,这个属性将为true | | upserted | 如果最后一个操作为更新请求且导致的是插入,该属性将为插入的文档的ObjectId | | wnote | 布尔值。如果错误与写入关注相关,则为true | | wtimeout | 布尔值,如果getLastError因wtimeout设置而超时,则为true | | waited | 如果最后一个操作因wtimeout设置而超时,则为超时前等待的毫秒数 | | wtime | 最后一次操作完成前等待的毫秒数。如果getLastError超时,wtime和waited应相同 |