Как обновить ~ 20000 записей в MongoDB с помощью этих критериев
У меня есть документ MongoDB, который выглядит следующим образом:
"sport": "NFL",
"team_id": 5,
"week_num": 6,
"meta": {
.... more data ....,
"season_year": 2013
}
То, что я хотел бы сделать, это скопировать ключ /t 21 > в документ верхнего уровня, оставив его также встроенным в хеш < <22 > . Поэтому он будет дублироваться, и конечный результат будет выглядеть следующим образом:
"sport": "NFL",
"team_id": 5,
"week_num": 6,
"season_year": 2013,
"meta": {
.... more data ....,
"season_year": 2013
}
Существует ли тривиальный способ обновления всех документов в моей коллекции с помощью описанной выше логики? Я использую MongoDB shell version: 2.4.3
Ответы
Ответ 1
Проблема заключается в том, что во время обновления вы не можете ссылаться на документ, который вы обновляете. Таким образом, вы не можете достичь того, чего хотите в одном запросе.
Вам нужно перебирать все документы и сохранять их по одному:
db.yourCollection.find({}).forEach(function(doc) {
doc.season_year = doc.meta.season_year;
db.yourCollection.save(doc);
});