所以我在这里进行此迁移工作正常。使用migrate-mongo
npm包。每个listing
文档都有lat
和lng
个键/值对,我需要在geo
下移动:
up(db, next) {
db.collection('listings').find().forEach((listing) => {
db.collection('listings').findOneAndUpdate(
{ id: listing.id },
{
$set: {
geo: {
type: [listing.lat, listing.lng],
index: '2d',
},
},
}
);
});
next();
},
down(db, next) {
db.collection('listings').update({}, { $unset: { geo: 1 } });
next();
}
问题是缺乏mongo的经验,感觉可以通过db.collection.update
以更优化的方式完成。像这样:
db.collection('listings').update({}, {
$set: {
geo: {
type: [this.lat, this.lng],
index: '2d',
}
}
});
问题是this.lat
和this.lng
失败,因为this
未指向文档实例。有没有办法在更新中获取实例值?