如何将嵌入式字段移出其嵌入式文档?

时间:2018-06-29 23:05:50

标签: mongodb nosql

这是我的JSON文档之一的示例:

{
    "_id": 1,
    "SongId": 1,
    "Details": {
        "Artist": "Cyndi Lauper",
        "Album": "She's So Unusual",
        "ReleaseYear": 1983
    },
    "SongTitle": "Girls Just Want To Have Fun"
}

如何编写查询以将“艺术家” 的位置及其值从“详细信息” 文档中移出,而保留“相册”和“发行年份”仍然嵌入。

1 个答案:

答案 0 :(得分:0)

除了更新字段名称之外,$rename operator还可以用于将字段移出(或移入)嵌入式文档。

处理嵌入式文档中的字段时,需要使用dot notation来引用字段名称。

假设集合名称为discography,则可以使用以下方法移动Details.Artist字段:

db.discography.update(
    {_id: 1},
    {$rename: { "Details.Artist": "Artist"}}
)

示例结果:

> db.discography.findOne({_id: 1})
{
    "_id" : 1,
    "SongId" : 1,
    "Details" : {
        "Album" : "She's So Unusual",
        "ReleaseYear" : 1983
    },
    "SongTitle" : "Girls Just Want To Have Fun",
    "Artist" : "Cyndi Lauper"
}