我正在使用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)
我还应该考虑其他任何事情,以便只在文档中修改答案字段吗?
答案 0 :(得分:2)
您需要使用$ set更新文档来修改字段的子集。这应该做你想要的:
val update = MongoDBObject(
"$set" -> MongoDBObject("answers" -> userExam.userAnswers)
)
有关mongodb中$ set的更多信息:http://docs.mongodb.org/manual/reference/operator/update/set/