2015-03-30 59 views
0
{"layers":[{"layer name":"layer1","layer_vals":[{"name":"val1","updated":"value"}]}]} 

我已經像一個above.I JSON文檔希望改變每次更新時對subdocument.As執行的操作的值可以看出該文檔嵌套在兩個數組中。我計劃使用$ addToSet來首先添加新的更新值,然後執行$ pull以刪除舊的。但是我收到一個錯誤,說我無法在同一個文檔上執行這兩個操作。有沒有解決這個問題的方法? 同樣在解決上述問題的任何其他建議將是巨大的

+0

請查看https://jira.mongodb.org/browse/SERVER-831 – xiaodai 2017-08-21 07:01:21

回答

0

我收到一個錯誤說我無法對同一document.Is有沒有解決這個兩個操作?

號作爲MongoDB的3.0的可以在陣列字段在單個更新只使用一個操作者像$push$addToSet,或$pop。這裏有一堆相關的JIRA問題,但最接近的可能是SERVER-1050

在您的架構掃視了一眼,那樣子你會通過具有參考parent到了layer場居住的文檔每一層

{ "name" : "layer1", "parent" : "some reference", "vals" : [{ "name" : "val1", "updated" : "value" }] } 

可能的文件得到更好的服務。假設它是一個嵌套數組,你將遇到難以在layer_vals上查詢的情況。