【问题标题】:mongo db pull element out of an array [duplicate]mongodb从数组中拉出元素[重复]
【发布时间】:2018-08-19 05:50:53
【问题描述】:

我有一个看起来像这样的小 mongo 文档:

{
    "_id": {
        "$oid": "5aa441e898cc0b32a819be0c"
    },
    "details": {
        "Artist": "Cyndi Lauper",
        "Album": "She's So Unusual",
        "ReleaseYear": 1983
    },
    "SongID": 1,
    "SongTitle": "Girls Just Want To Have Fund"
}

我需要将 Artist 元素从 details 数组中提取出来,但将数据保留在整个文档中。生成的文档需要如下所示:

{
    "_id": {
        "$oid": "5aa441e898cc0b32a819be0c"
    },
    "details": {
        "Album": "She's So Unusual",
        "ReleaseYear": 1983
    },
    "SongID": 1,
    "SongTitle": "Girls Just Want To Have Fund",
    "Artist": "Cyndi Lauper"
}

我是 mongo 的新手,所以我在这方面并不强。该集合被称为歌曲,所以我想我需要做这样的事情:

db.songs.updateOne({},{$set : {"Artist":$pull{"detail.Artist"}}})

非常感谢任何帮助和/或建议。

乔纳森

【问题讨论】:

  • 我不认为我的问题是重复的。其他示例显示了如何从数组中删除元素,但这样做会丢失已删除元素中的数据。我想保存数据。我只想将名为 Artist 的数组元素从数组中拉出,以便不再使用点表示法来引用它。

标签: mongodb


【解决方案1】:

您可以在 MongoDB shell 中编写类似的内容:

var doc={doc:{key42:"value"},somekey:"value"};
doc.key42=doc.doc.key42;
delete doc.doc.key42;

之后就可以写了

doc

然后按回车键。 输出应为:

{doc:{},somekey:"value",key42:"value"};

然后你就可以保存文档了:

db.collection.save(doc);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2018-11-10
    • 2021-02-18
    • 2016-12-22
    • 1970-01-01
    相关资源
    最近更新 更多