mongodb的文档如何通过自己的某些字段更新文档的方法

仅仅改变Key

如果你的值没有问题,只是你的key出现了问题,需要修改key,可以使用$rename来做简单的处理

1
2
3
4
5
// init
db.events.insert({ 'lat': 1, 'lon': 2, someotherdata: [] })
db.events.insert({ 'lat': 4, 'lon': 1, someotherdata: [] })
// doit
db.events.update({}, {$rename: {'lat': 'coords.lat', 'lon': 'coords.lon'}}, false, true)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// result
db.events.find()
{
"_id" : ObjectId("5113c82dd28c4e8b79971add"),
"coords" : {
"lat" : 1,
"lon" : 2
},
"someotherdata" : [ ]
}
{
"_id" : ObjectId("5113c82ed28c4e8b79971ade"),
"coords" : {
"lat" : 4,
"lon" : 1
},
"someotherdata" : [ ]
}

修复Key和Value

如果你的value也出现问题,那么仅仅rename是无济于事的,你可以用下面的方法来处理整个collection。

1
2
3
4
5
6
7
8
9
10
11
12
13
db.events.find().snapshot().forEach(
function (e) {
// update document, using its own properties
e.coords = { lat: e.lat, lon: e.lon };

// remove old properties
delete e.lat;
delete e.lon;

// save the updated document
db.events.save(e);
}
)

查看stackoverflow

文章目录
  1. 1. 仅仅改变Key
  2. 2. 修复Key和Value
,