如何改变一个领域&在Mongodb中添加一个子字段

时间:2017-05-19 11:48:41

标签: mongodb mongodb-query

我有以下mongo文件:

{
    "_id" : ObjectId("591e36eb2cdce09936d8e511"),
    "bday" : null,    
    "studentId" : "000004"

}

我想成功:

{
    "_id" : ObjectId("591e36eb2cdce09936d8e511"),
    "bday" : null,    
    "studentId" : {
        "id" : "000004"
    }    
}

我尝试了以下内容:

db.persons.update({"studentId": "000004"},{$set : {"studentId.id": "000004"}},false,true)

但它给出了一个错误:

LEFT_SUBFIELD only supports Object: studentId not: 2

有人可以帮忙吗?

谢谢,
萨米特。

2 个答案:

答案 0 :(得分:1)

在你的情况下,你会看到一个错误,因为你正试图采取" studentId"这是字符串并在其中添加属性。要修复它,你应该像这样设置整个新对象

db.persons.update({"studentId":"000004"},{$set:{"studentId":{"id":"000004"}}})

另一个选择,例如,如果您需要更改整个集合的结构,则只需迭代每个元素并更新它们。像这样:

db.persons.find({}).forEach(function (item) {
    if (item.studentId != null){
        item.studentId = {id:item.studentId};
        db.persons.save(item);
    }
});

答案 1 :(得分:0)

我希望这会有所帮助

db.collection.update({_id:ObjectId("591e36eb2cdce09936d8e511")},{$set:{"studentId":{"id":"000004"}}})