如何删除mongodb中的深层嵌套对象

Joh*_*hnE 10 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
         }
      },
   }
}
Run Code Online (Sandbox Code Playgroud)

我如何去除第二本书的页数?我试过了

{$unset : {"books.2234567890.page_count":""}}
Run Code Online (Sandbox Code Playgroud)

没工作.有任何想法吗?

非常感谢

mgo*_*fin 12

我抓了它,看起来你要做的事情应该正常工作.我会检查您的查询以找到要更新的正确文档,并确保它找到您想要的内容.

> 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"
}
>
Run Code Online (Sandbox Code Playgroud)