Мне нужно увеличить счетчик значения внедренного объекта для свойства или создать свойство объекта, если оно не существует, или создать всю запись, если ее нет, используя Casbah для MongoDB в Scala. Также интересно услышать, как это сделать в Mongo напрямую, если это вообще возможно.
Например, если в коллекции нет объектов, начните с добавления записи с заданным _id
и объекта vals
со значением по умолчанию 1
для свойства a
. Этот запрос не работает, но выглядит примерно так, как я и ожидал:
import com.mongodb.casbah.Imports._
coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals" -> Map("a" -> 1)), true, false)
Это должно привести к следующей записи:
{ "_id" : "obj1", "vals" : { "a" : 1} }
Теперь вставьте новый объект в vals
:
coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals" -> Map("b" -> 1)), true, false)
Урожайность:
{ "_id" : "obj1", "vals" : { "a" : 1, "b" : 1 } }
Наконец, вставьте/увеличьте значение свойства b
для vals
, используя точно такой же запрос, как и на предыдущем шаге:
coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals" -> Map("b" -> 1)), true, false)
Урожайность:
{ "_id" : "obj1", "vals" : { "a" : 1, "b" : 2 } }