2014-12-08 2 views
0

"upsert"라는 용어를 통해 내가 원하는 것을 말하는 올바른 방법을 사용하고 있는지 알 수 없습니다. 나는 mongoDb에 처음 왔고, 내가 필요한 것은 이것이다. 나는 SOURCE 컬렉션과 TARGET 컬렉션을 가지고 있습니다. SOURCE 컬렉션은 계속 변경됩니다 (동일한 구조, 새 데이터). SOURCE에서 TARGET으로 mapreduce를 실행하고 있지만 TARGET에있는 기존 데이터를 대체하지 않고 계속 업데이트해야합니다. 예를 들어, TARGET에 3 개의 하위 문서와 2 개의 새 하위 문서가 SOURCE로 인해 생성 된 경우 TARGET에서 5 개의 하위 문서를 가져와야합니다. 달성 가능합니까? 그렇다면 어떻게?MongoDB map reduce upsert

답변

1

'rereduce'라는 환상적인 개념이 있습니다.

기본적으로 기존 컬렉션에서 축소 기능을 실행할 수 있습니다.

이 가장 유용한 비트입니다 :

http://docs.mongodb.org/manual/tutorial/perform-incremental-map-reduce/

은 기본적으로 당신이 할 필요가 :

db.mycollection.mapReduce(myMapper, myReducer, {out:{reduce:'targetCollection'}}); 

즐기십시오!

+0

팁 주셔서 감사합니다. 필요한 항목과 가장 가까운 것이지만 이전 서브 문서는 여전히 잃어 버렸습니다. –

+0

나는 너를 확신하지 못한다. 이 기술을 사용하여 사용자 작업 문서를 보관합니다. 매일 우리는 전체 이벤트를 살펴본 후 사용자 액션 문서 상단에이를 매핑합니다. 몇 달 동안 상호 작용하지 않은 사용자는 여전히 데이터베이스에 있습니다 (그리고 닦아야합니다!) –