나는 몇 가지 '제품'개체가 :MongoDB : 배열 요소에서 일치 및 정렬 하시겠습니까?
{ name: 'ProductA',
social_stats: [
{ name: 'facebook',
shares: 60
},
{ name: 'twitter',
shares: 0
}
]
}
{ name: 'ProductB',
social_stats: [
{ name: 'facebook',
shares: 0
},
{ name: 'twitter',
shares: 30
}
]
}
난 항상 적어도 주에 대부분에서 분류 "트위터에서 가장 많이 공유 된 제품", "페이스 북에서 가장 많이 공유 된 제품"과, 쿼리 싶습니다. 내가 대신 내가 기대 '트위터'에 대해 동일한 쿼리를 실행할 때이 그러나, '올바른'이다
{ name: 'ProductA' }
{ name: 'ProductB' }
:
db.videos.find({
_id: {
social_stats: {
$elemMatch: {
name: 'facebook'
}
}
}
).sort({
social_stats: {
shares: -1
}
})
수익률 :
그래서 페이스 북에 대한 내 첫 번째 쿼리는 같은 보이는 B-> A와 동일한 출력을받습니다. & 정렬 논리를 함께 쓰지 않는 것처럼 보입니다. 즉, ''twitter '와 일치하는 social_stat 요소를 기준으로 주문하십시오.
나는 요소 social_stat 일치로 변경 내 쿼리 순서의 적용을 반영하기 위해()를 어떻게
- 무엇을 찾고 있어요?
- 이러한 일반적인 MongoDB 쿼리로는 불가능한 경우, 집계 프레임 워크로 수행 할 수있는 작업입니까? 그리고 그게 어떻게 생겼을까요?
- 그런 다음 보너스로 Mongoid를 사용하여 동등한 쿼리를 작성하는 방법은 무엇입니까?
일부 관련 링크 내가 바라 보았다 :
- 찾을 수 this similar post (나는 집계 프레임 워크를 사용할 필요가 의미합니까?) social_stats 이후
- $elemMatch operator
- Aggregation operators
이것은 몽고 이드로 번역하는 것이 간단해야하지만 [몽고이와 MongoDB 집계 프레임 워크] (http://blog.joshsoftware.com/2013/09/05/mongoid-and-the-mongodb-aggregation-framework/)는 도움이 될 시작입니다. – Stennie
이것은 정확하게 내가 끝내었던 것이고, 집계 프레임 워크는 훌륭하게 일을 완수했다. Mongoid는 MongoDB 쿼리를 작업으로 변환하는 것이 매우 간단하기 때문에 실행할 명령 배열 ('[match, unwind, match, sort, project]')을 전달할 수있는'Model.collection.aggregate() 몽고이드와. –