2016-08-22 21 views
1

升級到3.0 mongo驅動程序後,我收到更新請求中的一些新錯誤。對於更新這樣的:Mongodb無法使用部分(...)遍歷元素({...:undefined})]

db.table.update({_id: .... } , {$set : { "tags.Tag1" : true }}); 

我收到

cannot use the part (tags of tags.Tag1) to traverse the element ({tags: null})]] 

的問題是,我更新的文件已經包含默認值tags:空。如果我手動從文檔中刪除它,更新開始正常工作。對我來說這是一些新的行爲,並且在將mongo驅動程序從2更新爲3(甚至不是數據庫本身)之後發生。

但現在我想知道現在如何避免這個錯誤。我當然可以檢查已經定義的「標籤」,然後只有$set元素或整個地圖。但它意味着3個請求與一箇舊的和其他像原子一樣的問題。

回答

4

雖然這是一個老的文章,但我認爲你正在尋找的是$ positional operator

我猜你的「標籤」是一個數組。所以上面的例子可能類似於

db.table.update({_id: .... } , {$set : { "tags.$.Tag1" : true }}); 

希望它有幫助!