나는 장바구니를 개발 중이고 현재 나의 요구 사항은 상점 주인에게 대시 보드를 표시하는 것입니다. 제품 이름에 중복이있을 수 있으므로 주문한 제품을 제품 ID로 그룹화하고 합계를 수행하여 총 주문 수를 계산했습니다. 이제는 읽을 수있는 이름이 필요하지만 그렇게하면 오류가 발생합니다.mongoDB/mongoose 집계 파이프 라인을 사용하여 사용자 정의 필드를 기반으로 집계 된 값을 얻으려면 어떻게해야합니까?
쿼리
ShoppingCart
.aggregate({ $match: { "orderedProducts.registrationDetails.createdByID": LOGGED_IN_ADMIS_ID } })
.project("orderedProducts.productID orderedProducts.title orderedProducts.qty -_id")
.unwind("orderedProducts")
.group({ _id: "$orderedProducts.productID", counts: { $sum: "$orderedProducts.qty" }, title: "$orderedProducts.title" })
.exec((err, docs) => {
if (err) {
return res.status(503).send(err);
}
res.send(docs);
});
오류 메시지 :
가{ "이름": "MongoError", "메시지": "필드 '제목'는 누적 객체 여야합니다", " OK "0"에 errmsg는 ":"필드 '제목'는 어큐뮬레이터 개체 ","코드이어야 "40,234"코드 명 ""Location40234은 "}
이는 부분 인 오류의 원인입니다 제목 : "$ orderedProducts.title"
친애하는 @imixtron 귀하의 제안에 감사드립니다. 문제는 제품의 이름이 내 경우에 고유하지 않다는 것입니다. 사용자가 이름이 같은 두 개 이상의 다른 제품을 만들 가능성이 있습니다. 따라서 이름 대신 제품 ID로 제품을 그룹화했습니다. – Taha
내 쿼리는 ** _ id **에 따라 그룹화가 동일합니다. 그룹화 된 모든 문서에는 동일한 문서가 있습니다. 따라서 시작 또는 끝에서 하나를 선택할 수 있습니다. – imixtron
죄송합니다. 잘못 처리 했으므로 고쳐 주셔서 감사합니다. – Taha