복붙노트

[MONGODB] 이 기준에 MongoDB의에서 ~ 20,000 레코드를 업데이트하는 방법

MONGODB

이 기준에 MongoDB의에서 ~ 20,000 레코드를 업데이트하는 방법

나는 MongoDB의 문서가 그 다음과 같습니다 :

"sport": "NFL",
"team_id": 5,
"week_num": 6,
"meta": {
   .... more data ....,
   "season_year": 2013
}

내가하고 싶은 무엇도 메타 해시에 포함을 떠나는 동안 IS는 "최상위 수준"문서에 season_year 키 / 발 복사합니다. 이 복제 될 것이며 최종 결과는 같을 것이다 그래서 :

"sport": "NFL",
"team_id": 5,
"week_num": 6,
"season_year": 2013,
"meta": {
   .... more data ....,
   "season_year": 2013
}

논리 위에서 설명한 내 컬렉션의 모든 문서를 업데이트 할 수있는 사소한 방법이 있나요? 나는 MongoDB의 쉘 버전을 사용하고 있습니다 : 2.4.3

해결법

  1. ==============================

    1.문제는 업데이트하는 동안, 당신은 당신이 업데이트되는 문서를 참조 할 수 있다는 것입니다. 그래서 당신은 당신이 한 쿼리에서 원하는 것을 달성 할 수 없다.

    문제는 업데이트하는 동안, 당신은 당신이 업데이트되는 문서를 참조 할 수 있다는 것입니다. 그래서 당신은 당신이 한 쿼리에서 원하는 것을 달성 할 수 없다.

    당신은 모든 문서를 하나 하나 그들 저장을 반복해야합니다 :

    db.yourCollection.find({}).forEach(function(doc) {
      doc.season_year = doc.meta.season_year;
      db.yourCollection.save(doc);
    });
    
  2. from https://stackoverflow.com/questions/19824759/how-to-update-20-000-records-in-mongodb-with-this-criteria by cc-by-sa and MIT license