2012-04-15 2 views
3

MongoDB의 업데이트 쿼리에서 자체 참조 값을 가져올 수 있습니까? MySQL의에서 실행할 수 있습니다 : 내가 아는 바로는쿼리에서 MongoDB 자체 참조 값 사용

UPDATE table SET column1 = column2 + column3,...

을 만 맵리 듀스는 MongoDB를이 동안 서버 측 작업을 수행하는 데 사용할 수 있습니다. 이를 위해 MapReduce를 어떻게 사용합니까?

답변

3

MongoDB의 업데이트 쿼리에서 자체 참조 값을 얻을 수 있습니까?

아니요,이 업데이트는 일반적인 쿼리/업데이트 시스템에서는 불가능합니다.

내가 아는 바로는 MongoDB의 서버 측에서 MapReduce 만 사용할 수 있습니다.

Map/Reduce는 기존 데이터를 요약하고 데이터를 별도의 컬렉션/테이블에 출력하는 데 사용됩니다. Map/Reduce는 기존 데이터를 업데이트하지 않습니다.

이 업데이트를 MongoDB와 함께 실행하려면 전체 모음에 대해 간단한 for 루프를 실행하여 각각을 업데이트해야합니다. 쉘을 포함하여 모든 드라이버에서이 작업을 수행 할 수 있습니다.

db.table.find().forEach(function(x) { 
    var newValue = x.column2 + x.column3; // Add column2 & 3 
    db.table.update({_id: x._id}, { $set: { column1: newValue } }); // Set the value on column1 
}) 
+1

작은주의 사항 : 예제의 끝 부분에 닫는 paranthesis를 추가하여 작동하는 문장으로 만들어야합니다. –