【问题标题】:MongoDB renaming a field/key [duplicate]MongoDB重命名字段/键[重复]
【发布时间】:2017-05-19 00:35:35
【问题描述】:

我想更改 MongoDB 文档中的字段名称(只是字段名称,而不是值)。该文档如下所示,并且在 user= Soham 的集合中只有一个文档:

{_id : ObjectId(xxxxxxxxxxxx),
 user : "Soham",
 age  : 29
}

现在我想将名为“user”的字段更改为“name”,而不是字段的值。所以在 mongo shell 中我写了以下命令:

var soh = db.user.find({"user":"Soham"});
soh.name = soh.user;
delete soh.user;
db.user.update({"user":"Roshan"},soh);

当我运行更新命令时,它会抛出错误。由于我是 MongoDB 新手,因此不确定我哪里出错了。任何形式的帮助表示赞赏。

【问题讨论】:

    标签: mongodb insert document insert-update


    【解决方案1】:

    使用$rename 运算符。

    因此,在 mongo shell 中,要更新单个文档:

    db.user.update( { _id: ObjectId(xxxxxxxxxxxx) }, { $rename: { 'user': 'name'} } )
    

    更新所有文件

    db.user.updateMany( {}, {$rename: { "user": "name" } } )
    

    【讨论】:

    • 如何从 Mongoshell 复制 ObjectId(而不是编写它)?我正在尝试选择它,但不能..有什么想法吗?
    • 如果对你有帮助请标记为答案
    【解决方案2】:

    有运营商$rename

    db.user.updateMany( {}, { $rename: { "user": "name" } } )
    

    【讨论】:

    • 如何从 Mongoshell 复制 ObjectId ?我正在尝试选择它,但不能..有什么想法吗?
    • 你可以试试这样的。 var cursor = db.user.find(); while (cursor.hasNext()) { var doc= cursor.next(); print( "_id: " + doc._id ); }。更多这里docs.mongodb.com/manual/tutorial/iterate-a-cursor
    • 非常感谢!
    • 我试图将新的嵌入文档添加到现有文档中。当前文档结构是 {_id : ObjectId(xxxxxxx), name:"Soham", age:10} 。尝试将地址文档 address : { city :"XYZ", zip:1234} 嵌入到上述文档中。我做了以下步骤 var a = db.names.find({"name":"Soham"}) ; a.address = {city:"XYZ",zip:1234}; db.names.update({name:"Soham"},a);当我运行它时,它抛出了错误。这是 kristina chodorow 在书中给出的确切步骤,所以不确定出了什么问题。如果您知道答案,请告诉我。提前致谢。
    • 这是插入嵌入文档的方式。 db.names.update({name:"Soham"},{ $set: { "address.city": "zzz", "address.zip":1234 } })。欲了解更多信息,docs.mongodb.com/manual/reference/operator/update/set。如果您发现更多问题,请创建一个新问题,因为这不属于这里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2020-10-14
    相关资源
    最近更新 更多