Reactive Mongo Extensions:如何在反应式mongo扩展中使用查询DSL,每次使用$ push

时间:2016-02-22 10:31:07

标签: mongodb playframework reactive-programming reactivemongo

我想在mongodb文档数组字段中推送文档列表。在mongodb中,我们可以将$push$each运算符一起使用,但我们如何在响应式mongo扩展中使用它们。示例如下:

  1. 这是我的doucment { "_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 } ]

1 个答案:

答案 0 :(得分:0)

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

应该为你做,因为'locations'是一个'Location'序列,它是一个带有正确json Read和Writes的case类。使用BSON几乎是一样的。

顺便说一句,也许你想在这里使用$ addToSet。