Реактивные расширения Mongo: как использовать $push с $each, используя запрос DSL в реактивных расширениях Mongo

Я хочу отправить список документов в поле массива документов mongodb. В mongodb мы можем использовать $push с оператором $each, но как мы можем использовать реактивные расширения mongo. пример, как показано ниже:

  1. Это мой документ { "_id" : ObjectId("56cadf56c3ad8cb30223613a"), "locations" : [ { "_id" : ObjectId("56cadf56c3ad8cb30223613f"), "fieldType" : "List", "locationType" : "DEFAULT", "createdOn" : ISODate("2016-02-22T15:43:42.929Z"), "value" : "Default", "active" : true } ] }

  2. список документов, которые вы хотите вставить в атрибут «местоположения» вышеуказанного документа. [ { "_id" : ObjectId("56cae036c3ad8cb20a23614b"), "locationType" : "COMPANY", "createdOn" : ISODate("2016-02-22T15:47:26.168Z"), "value" : "India", "active" : true }, { "_id" : ObjectId("56cae036c3ad8cb20a23614b"), "locationType" : "COMPANY", "createdOn" : ISODate("2016-02-22T15:47:26.168Z"), "value" : "USA", "active" : true } ]


person Harmeet Singh Taara    schedule 22.02.2016    source источник
comment
Какой запрос тестируется в оболочке MongoDB?   -  person cchantep    schedule 23.02.2016


Ответы (1)


      val updateOp = Json.obj("$push"-> Json.obj("locations" -> Json.obj("$each" -> Json.toJson(locations))))
      collection.update(Json.obj("_id" -> myID), updateOp)

должен сделать это за вас, учитывая, что «местоположения» - это последовательность «местоположений», которая представляет собой класс case с правильным чтением и записью json. Это будет почти то же самое с использованием BSON.

Кстати, может быть, вместо этого вы захотите использовать здесь $addToSet.

person Fand    schedule 21.12.2016