Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Casbah MongoDB仅更新某些字段_Mongodb_Scala_Casbah - Fatal编程技术网

Casbah MongoDB仅更新某些字段

Casbah MongoDB仅更新某些字段,mongodb,scala,casbah,Mongodb,Scala,Casbah,我使用Casbah Scala驱动程序在MongoDB数据库上执行CRUD操作。我想更新特定文档中的特定字段。我使用findAndModify方法,但令我惊讶的是,整个文档都被重写了。我的原始文档在findAndModify调用之前有5个字段,我想更新其中的1个字段。findAndModify调用之后,我只剩下2个字段。这就是我要尝试的 val mongoClient = MongoClient() val db = mongoClient(MongoDBSetup.TEMP_DATABASE)

我使用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)

还有什么我需要考虑的,只有在文档中修改了答案字段?

您需要用$SETUP更新文档来修改字段的子集。这应该满足您的要求:

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

有关mongodb中$set的更多信息:

谢谢您的提示。我没有找到使用它的实际语法。我知道我可以使用set运算符,但不知道如何使用它。再次感谢!