This simple example works for me:
val collection = ... // your collection goes here
collection.update(
obj("_id" -> "1"),
obj(
"$setOnInsert" -> obj("field 1" -> "value 1"),
"$set" -> obj("field 2" -> "value 2")),
upsert = true
).map {
case n => println(n.ok.toString) // do smth
}