2012-02-09 54 views
0

我的任務是創建擴展MongoDBRepository的存儲庫,允許我定義findAndUpdate方法。 MongoOps和模板方法是不允許的。這是我的MongoDocument看起來像:findAndUpdate MongoDBRepository

{"_id":"somedocumentId","attributetype1":{"class":"type1","value":"somevalue"}, 
      "attributetype2":{"class":"type2","value":"somevalue"}, 
      "attributetype3":{{"class":"type2","value":"somevalue"},{"class":"type2","value":"somevalue"},...,} 

正如你可以看到一些atributes只是類值,而另一些名單。 這裏是更新請求我從我的通訊子系統接收:

{"documentId":"somedocumentIdValue","updatedata":{"class":"typeX","value":"somevalue"} 

如果請求數據的類型就是一個類的值(如attributetype1和2)我需要更新它,如果更新數據是類型保存爲我需要附加的列表。

在這種情況下你會提出什麼建議?

+0

需要更多的代碼,你是說,你不能使用蒙戈的findAndModify?爲什麼? – 2012-02-10 07:14:56

回答

0

您需要能夠確定是否執行$set$push,因此似乎有三種選擇。

  1. 更新消息子系統以包含操作員。

    這可能是不可行..

  2. 問題一個findAndModify$push

    如果沒有這將失敗的數組:

    $推/ $ pushAll修飾符不能適用於非陣列

    所以有$set

    補發感覺就像一個黑客,但將工作

  3. 做一個查詢,返回記錄並檢查它,然後在更新查詢中發出正確的操作符。

    在應用