[MONGODB] 어레이 내 요소 MongoDB에 의해 기
MONGODB어레이 내 요소 MongoDB에 의해 기
나는 기사의 목록을 가지고, 그들 각각은 그들에 언급 된 다양한 개인을 나열하는 배열 속성이 있습니다 :
_id: {
$oid: "52b632a9e4f2ba13c82ccd23"
},
providerName: "The Guardian",
url: "http://feeds.theguardian.com/c/34708/f/663860/s/3516cebc/sc/38/l/0L0Stheguardian0N0Cmusic0C20A130Cdec0C220Cwaterboys0Efishermans0Eblues0Etour0Ehammersmith/story01.htm",
subject: "The Waterboys – review",
class_artist: [
"paul mccartney"
]
나는 그들이 지난 7 일 이내에에서 태그 된 기사의 수에 따라 모든 개별 예술가 (class_artist)의 목록을 얻으려면 (실패) 노력했습니다.
나는 멀리로 왔 :
var date = new Date();
date.setDate(date.getDate() - 7);
db.articles.group({
key: { class_artist: 1 },
cond: { class_date: { $gt: date } },
reduce: function ( curr, result ) { result.cnt++; },
initial: { cnt : 0 }
}).sort({cnt: -1});
그러나 불행하게도, 그것은 (작가의 목록입니다) 각각의 배열 값에 기반을 계산하지만, 배열 조성으로하지 않습니다.
나는 $ 언 와인드 기능을 사용하여 시도하지만 그것이 작동되도록 할 수 없었다.
해결법
-
==============================
1.당신은 어떤 프레임 워크를 사용하고 있습니까? 이 MongoDB의 쉘하지 않고 외모는 맵리 듀스 주위에 몇 가지 이상한 래퍼를 좋아한다. 이 경우에 $의 언 와인드에서 사용할 수없는 것입니다, 당신은 통합 프레임 워크에서 사용자를 위해 필요합니다. 다음은 몽고 쉘에서 원하는 내용은 다음과 같습니다
당신은 어떤 프레임 워크를 사용하고 있습니까? 이 MongoDB의 쉘하지 않고 외모는 맵리 듀스 주위에 몇 가지 이상한 래퍼를 좋아한다. 이 경우에 $의 언 와인드에서 사용할 수없는 것입니다, 당신은 통합 프레임 워크에서 사용자를 위해 필요합니다. 다음은 몽고 쉘에서 원하는 내용은 다음과 같습니다
db.articles.aggregate([ {$match: { class_date: { $gte: date } } }, {$project: { _id: 0, class_artist: 1 } }, {$unwind: "$class_artist" }, {$group: { _id: "$class_artist", tags: { $sum: 1 } }}, {$project: { _id: 0,class_artist: "$_id", tags: 1 } }, {$sort: { tags: -1 } } ])
그래서 효율적으로 :
그리고 통합의 좋은 점은 당신이 점차에 무슨 일이 일어나고 있는지 확인하는 단계를 구축 할 수있다.
흔들어하고 자신의 드라이버 구현 또는 ODM 프레임 워크에 빵을 필요에 따라.
from https://stackoverflow.com/questions/21509045/mongodb-group-by-array-inner-elements by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 몽구스의 고유 값에 대한 쿼리는 무엇입니까? (0) | 2019.12.04 |
---|---|
[MONGODB] MongoDB의 전체 및 부분 텍스트 검색 (0) | 2019.12.04 |
[MONGODB] 하지 덮어 쓰기 모델은 한 번 몽구스를 컴파일 할 수 (0) | 2019.12.04 |
[MONGODB] 컬렉션의 속성을 매핑하기위한 감소 /지도 사용 (0) | 2019.12.04 |
[MONGODB] MongoDB의에서 중첩 된 배열을 업데이트 (0) | 2019.12.04 |