【问题标题】:writeConcern is not setting to Acknowledged in mongodbwriteConcern 未在 mongodb 中设置为 Acknowledged
【发布时间】:2016-07-01 11:40:45
【问题描述】:
private val DATABASE:String   = config.getString("db.dbname")

private val SERVER:ServerAddress = {
    val hostName=config.getString("db.hostname")
    val port=config.getString("db.port").toInt
    new ServerAddress(hostName,port)
}

val connectionMongo = MongoConnection(SERVER)
def collectionMongo(name:String) = connectionMongo(DATABASE)(name)

val result:WriteResult = collectionMongo("pgroup")
    .insert(new BasicDBObject("_id",privateArtGroup.getUuid)
    .append("ArtGroupStatus",privateArtGroup.artGroupStatus.toString())
    .append("isNew",privateArtGroup.isNew), WriteConcern.Acknowledged)

log.info("what is the write concern " + collectionMongo(pgroup).getWriteConcern)

log.info("what is the write concern "+collectionMongo(pgroup).getWriteConcern) 

我将 WriteConcern 设置为 Acknowledged 但它没有设置

log stataments 从我知道它没有设置的地方打印出来

什么是 write concer WriteConcern{w=0, wTimeout=null ms, fsync=null, journal=null

为什么是w=0?应该是w=1 我正在使用casbah V 3.1.1

【问题讨论】:

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


    【解决方案1】:
    val result:WriteResult = collectionMongo("pgroup")
    .insert(new BasicDBObject("_id",privateArtGroup.getUuid)
    .append("ArtGroupStatus",privateArtGroup.artGroupStatus.toString())
    .append("isNew",privateArtGroup.isNew), WriteConcern.Acknowledged)
    

    WriteConcern.Acknowledged - 使用此写入关注点的写入操作将在返回之前等待主服务器的确认。

    w: 1 - 请求确认写入操作已传播到副本集中的独立 mongod 或主节点。

    原因 w=0 ? i 一旦使用 writeconcern 执行给定的插入查询,确认工作就完成了。此外,我们只为插入查询而不是集合设置 writeconcern。这可能是您得到 w=0 的原因。

    但我仍然无法弄清楚 - 通常我们有 w: 1 是 MongoDB 的 default write concern 以及为什么你得到 w=0。

    【讨论】:

      猜你喜欢
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      相关资源
      最近更新 更多