2013-01-20 79 views
3

說我有一個代表書籍像這樣的文件:如何在MongoDB中刪除了深刻嵌套對象

{ 
    "_id":"1234567890", 
    "title":"Lord Of The Rings", 
    "books": { 
     "1234567890":{ 
     "_id":"123456789890", 
     "title":"The Two Towers", 
     "page_count":{ 
      "en":6000, 
      "de":7000 
     } 
     }, 
     "2234567890":{ 
     "_id":"223456789890", 
     "title":"The Return Of The King", 
     "page_count":{ 
      "en":6000, 
      "de":7000 
     } 
     }, 
    } 
} 

我怎麼會去的第二本書移除頁面計數?我試過

{$unset : {"books.2234567890.page_count":""}} 

沒有工作。有任何想法嗎?

非常感謝

+0

你可以使用'$ unset'對象顯示你正在使用的代碼嗎? – JohnnyHK

+0

我一定錯過了一些東西,因爲我嘗試了下面的mgoffin的建議,現在一切正常。 Bizare。 – JohnE

回答

7

我參加了一個刺它,它看起來像你正在嘗試做的應該正常工作。我會檢查你的查詢來找到適當的文件進行更新,並確保它找到你想要的。

> db.books.findOne() 
{ 
     "_id" : "1234567890", 
     "title" : "Lord Of The Rings", 
     "books" : { 
       "1234567890" : { 
         "_id" : "123456789890", 
         "title" : "The Two Towers", 
         "page_count" : { 
           "en" : 6000, 
           "de" : 7000 
         } 
       }, 
       "2234567890" : { 
         "_id" : "223456789890", 
         "title" : "The Return Of The King", 
         "page_count" : { 
           "en" : 6000, 
           "de" : 7000 
         } 
       } 
     } 
} 
> db.books.update({'_id': "1234567890"}, {$unset: {'books.2234567890.page_count': ""}}) 
> db.books.findOne() 
{ 
     "_id" : "1234567890", 
     "books" : { 
       "1234567890" : { 
         "_id" : "123456789890", 
         "title" : "The Two Towers", 
         "page_count" : { 
           "en" : 6000, 
           "de" : 7000 
         } 
       }, 
       "2234567890" : { 
         "_id" : "223456789890", 
         "title" : "The Return Of The King" 
       } 
     }, 
     "title" : "Lord Of The Rings" 
} 
> 
+1

好吧,我只是想確定$ unset是正確的操作,並且我正在以正確的方式引用文檔和嵌套對象。一定有其他的錯誤,我會按照你的建議,非常感謝! – JohnE