writeConcern未在mongodb中设置为Acknowledged

时间:2016-07-01 11:40:45

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

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但未设置

日志文件打印出来的地方我知道它没有设置

什么是写作关注WriteConcern{w=0, wTimeout=null ms, fsync=null, journal=null

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

1 个答案:

答案 0 :(得分: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。