Casbah MongoDB仅更新某些字段

时间:2013-12-29 21:33:07

标签: mongodb scala casbah

我正在使用Casbah Scala驱动程序在MongoDB数据库上执行CRUD操作。我想更新特定文档中的某些字段。我正在使用findAndModify方法,但令我惊讶的是,整个文档被重写。我的原始文档在findAndModify调用之前有5个字段,我想在其中更新其字段1。在findAndModify调用之后,我只剩下2个字段。这是我正在尝试的!

val mongoClient = MongoClient()
val db = mongoClient(MongoDBSetup.TEMP_DATABASE)
val query = MongoDBObject("uid" -> userExam.uid)
val update = MongoDBObject("answers" -> userExam.userAnswers)
db(MongoDBSetup.MONGO_DB_COLLECTION_USER_EXAM).findAndModify(query, update)

我还应该考虑其他任何事情,以便只在文档中修改答案字段吗?

1 个答案:

答案 0 :(得分:2)

您需要使用$ set更新文档来修改字段的子集。这应该做你想要的:

val update = MongoDBObject(
  "$set" -> MongoDBObject("answers" -> userExam.userAnswers)
)

有关mongodb中$ set的更多信息:http://docs.mongodb.org/manual/reference/operator/update/set/