0

嗨,我刚刚阅读了 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)

并从这个链接 中定义

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

我怎样才能获得返回的值,也想得到确认

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

我怎样才能知道数据已成功插入并且插入时没有发生错误..请帮助

4

1 回答 1

0

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

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

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

HTH - 罗伯

于 2015-04-12T14:40:57.493 回答