【问题标题】:how to see if write concern.Acknowledged succeeded or not如何查看是否写关注。确认成功与否
【发布时间】:2015-04-11 12:19:21
【问题描述】:

您好,我刚刚阅读了有关 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 确认它收到了写入操作并将更改应用于内存中的数据视图。已确认的写入关注点允许客户端捕获网络、重复密钥和其他错误。

我怎样才能实现返回值,也想得到确认

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    如果您需要比简单地在服务器内存中更持久的写入,您可以使用其他WriteConcern 级别,但通常需要权衡更高的延迟,从而实现更持久的写入。详情请见Javadoc

    HTH - 罗伯

    【讨论】:

    • 您能否通过代码解释一下如何使用WriteResult来确认成功
    • 您无需查看 WriteResult 即可判断插入是否成功。如果没有异常则写入成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多