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

日志状态从我知道它未设置的位置打印出来

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

为什么w=0?它应该是w=1
我正在使用casbah V 3.1.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。

09-25 19:24