나는 모든 것들에 대해 사용자 리뷰를 가지고 있으며 각 리뷰에는 숫자 (1-5) 등급이 있습니다. 그 일의 사용자 리뷰에서 개별 등급에 따라 각 "사물"의 평균 등급을 계산 한 다음 새로운 등급으로 "물건"을 다시 저장하는 일괄 작업을 정기적으로 실행하고 싶습니다. 각 문서를 다운로드하고 업로드 할 필요없이 서버에서이 기능을 사용하고 싶습니다.계산 된 값을 사용하여 MongoDB의 서버에서 문서를 일괄 적으로 업데이트하는 방법은 무엇입니까?
다른 말로하면, 내 컬렉션의 모든 것을 반복하고, 사용자 리뷰의 평점을 합한 다음 평점의 수로 그 합계를 나눔으로써 평균을 저장하는 솔루션을 찾고 있습니다. 각 문서의 속성에
나는지도이 접근 시도/뭔가처럼 처음에는 감소 :
function() {
var rating = 0;
for (var i = 0; i < this.Reviews.length; i++) {
rating += this.Reviews[i].Rating;
}
rating = rating/this.Reviews.length;
emit(this._id, rating);
}
function(key, values) {
return null;
}
는 평가가 제대로 계산하는 것,하지만 내부 db.things.update()를 호출 할 수 없습니다 중 하나 첫 번째 또는 두 번째 기능. 나는 은과 같이 결과 테이블을 사용하여 등급을 업데이트 할 수이었다
db.reduced.find().forEach(function(thing) {
db.things.update({_id: thing._id},{$set:{Rating:thing.value}});
});
을하지만 그것은지도/축소 할 필요는 없지만 ... 만족스럽지 클라이언트 측 솔루션입니다 아마 그게 갈 길이야?