我有以下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
有人可以帮忙吗?
谢谢,
萨米特。
答案 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"}}})