怎么看是否有写关注。承认是否成功

时间:2015-04-11 12:19:22

标签: mongodb scala mongodb-java casbah scala-2.11

您好我刚刚阅读了MongoDB中的WriteConcern并希望在我的代码中应用我正在做的就是这个

val mYdb = client("myDB")//get database Name
    val collection = mYdb("directUser")//get collection Name

    collection.drop()

       val result:WriteResult= collection.insert(new BasicDBObject("_id",directuser.uuid)
                        .append("Email",directuser.email)
                        .append("SecondryEmail",directuser.secondryEmail)
                        .append("FirstName",directuser.firstName)
                        .append("LastName",directuser.lastName)
                        .append("UserStatus",directuser.userStatus.toString())
                        ,WriteConcern.Acknowledged)

来自this link

的定义
  

已确认   对于确认写入问题的收据,mongod确认它已收到写入操作并将更改应用于数据的内存中视图。已确认的写入问题允许客户端捕获网络,重复密钥和其他错误。

如何实现返回值并且还想获得确认

  

它接收到写入操作并将更改应用于   内存中的数据视图。

如何才能知道数据插入成功且插入时没有出现错误..请帮助

1 个答案:

答案 0 :(得分:0)

正如您提供的文档所述,在Acknowledged写入后,一旦插入已应用于内存,服务器将响应客户端。一旦插入在内存中应用,它就会“成功”,只有在复制文档或将日志和/或数据文件写入磁盘之前,持有数据的服务器崩溃时才会“丢失”。

如果写入失败,使用Java客户端insert(...)将抛出异常。这意味着如果insert(...)没有抛出异常,那么使用WriteConcern.Acknowledged,文档现在在服务器上的内存中并且成功。 WriteResult还包含写入结果的度量标准(尽管使用2.6之前的服务器,数字可能为零,但失败仍然会引发异常)。

如果您需要写入比仅仅在服务器的内存中更耐用,那么您可以使用其他WriteConcern级别,通常权衡更高的延迟,从而导致写入更持久。有关详细信息,请参阅Javadoc

HTH - Rob