問題描述有如下數據:{"_id":1,"name":"dave123","favorites":["chocolate","cake","butter","apples"]}{"_id":2,"name":"li","favorites":["apples","pudding","pie","cake"]}{"_id":3,"name":"ahn","favorites":["pears","pecans","chocolate","cherries"]}{"_id":4,"name":"ty","favorites":["icecream"]}然后我剛才操作失誤,原本想給數組中添加一個元素結果給添加了一個數組進去:db.test.update({_id:2},{$push:{favorites:['cake']}})執(zhí)行后的數據如下:{"_id":1,"name":"dave123","favorites":["chocolate","cake","butter","apples"]}{"_id":2,"name":"li","favorites":["apples","pudding","pie","cake",["cake"]]}{"_id":3,"name":"ahn","favorites":["pears","pecans","chocolate","cherries"]}可以看到id2的文檔的favorites字段中又包含了一個數組想法設法刪除掉這個數組我知道$pull命令可以刪除掉數組中的一個元素,但是它需要一個條件,于是問題被引到了如何在數組中查詢另外一個數組.命令如下:db.tester.find({favorites:{$in:[['cake']]}})輸出:{"_id":2,"name":"li","favorites":["apples","pudding","pie","cake",["cake"]]}然后我嘗試使用update來完成這個操作,由于集合中就這么一條特殊數據我就沒有指定條件:db.tester.update({},{$pull:{favorites:{$in:[['cake']]}}})輸出:WriteResult({"nMatched":1,"nUpserted":0,"nModified":0})喜聞樂見,匹配到了東西但是沒有更新東西.繼續(xù)折騰在我的努力下試出來了這么一個命令:db.tester.update({favorites:{$in:[['cake']]}},{$pull:{favorites:{$in:[['cake']]}}})輸出:WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})這次這個數組中的元素被正確的刪除掉了.最終的問題WHY?udpate操作中查詢和跟隨著的修改操作有什么潛在的關系嗎,還是和$pull中的條件有關系?
新手上路,Mongodb update操作更新二維數組有趣的現象各位有什么建議?
慕虎7371278
2019-08-21 19:39:47