[MONGODB] MongoDB를 먼저 $
MONGODBMongoDB를 먼저 $
나는 MongoDB의 쿼리와 같은이
// Get scoreboard of challenge
response.aggregate = await ScoreBoardModel.aggregate([
{ $match: { challenge_id: mongoose.Types.ObjectId(req.body.challenge_id) } },
{ $group: { _id: '$user_id', value: { $sum: '$value' } } },
]);
어떤 출력 등에
[
{
"_id": "5b762887b6e3a91c60c01718",
"value": 4300
},
{
"_id": "5b8b41f10186400163d0df83",
"value": 6800
},
{
"_id": "5b762590b6e3a91c60c01713",
"value": 2023
}
]
그러나 나는 다음과 같은이 쿼리의 일을 수행 할 :
response.aggregate = await ScoreBoardModel.aggregate([
{ $match: { challenge_id: mongoose.Types.ObjectId(req.body.challenge_id) } },
{ $lookup: {
from: 'appusers',
let: { 'user_id': '$user_id' },
pipeline: [{ $match: { $expr: { $eq: [ '$_id', '$$user_id' ] } } },],
as: 'user'
} },
{ $group: { _id: '$user_id', value: { $sum: '$value' } } },
]);
나는 각 appusers의 세부 사항을 얻을 수 appusers에서 조회 $ 싶다. 어떻게 그렇게 할 수 있습니까?
해결법
-
==============================
1.당신은 $ 조별 리그를 적용한 후 첫 번째 문서를 반환 $ 첫째 집계 연산자를 사용합니다.
당신은 $ 조별 리그를 적용한 후 첫 번째 문서를 반환 $ 첫째 집계 연산자를 사용합니다.
ScoreBoardModel.aggregate([ { "$match": { challenge_id: mongoose.Types.ObjectId(req.body.challenge_id) } }, { "$lookup": { "from": "appusers", "let": { "user_id": "$user_id" }, "pipeline": [{ "$match": { "$expr": { "$eq": [ "$_id", "$$user_id" ] } } }], "as": "user" }}, { "$group": { "_id": "$user_id", "value": { "$sum": "$value" }, "appusers": { "$first": "$user" }, }} ])
from https://stackoverflow.com/questions/52215916/first-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를 후 Heroku가 응용 프로그램 충돌 3.0로 업데이트 (0) | 2019.12.20 |
---|---|
[MONGODB] MongoDB를 $ graphLookup 깊은 아이들에게 모든 수준을 얻을 - 중첩 된 결과를 (0) | 2019.12.20 |
[MONGODB] 대소 문자를 구분 방식과 MongoDB를 정렬 (0) | 2019.12.20 |
[MONGODB] 봄의 데이터 일치 및 필터 중첩 배열 (0) | 2019.12.20 |
[MONGODB] 내가 명시 적으로 밀접한 관계에 필요합니까? (0) | 2019.12.20 |