1
다른 컬렉션의 고유 한 문서를 사용자가 공유하는 정도에 따라 계속 표시 할 수 있습니다 (예 : item
이하). 가장 공유 된 문서를 찾는 집계 쿼리를 만들고 싶습니다. 내가 특정 기준과 일치하지 않기 때문에 필요한 $ 일치가 없습니다. 가장 많이 공유 한 것을 쿼리하는 것입니다. 지금 당장 가지고 있습니다 :
db.stories.aggregate(
{
$group: {
_id:'item.id',
'item': {
$first: '$item'
},
'total': {
$sum: 1
}
}
}
);
그러나 이것은 단지 1 개의 결과를 반환합니다. 단순한 find
쿼리를 수행해야하지만 쿼리 결과를 집계하여 각 결과에 항목이 있고 총 횟수가 컬렉션에 표시되도록합니다. 이야기 모음의 문서
예 :
{
_id: ObjectId('...'),
user: {
id: ObjectId('...'),
propertyA: ...,
propertyB: ...,
etc
},
item: {
id: ObjectId('...'),
propertyA: ...,
propertyB: ...,
etc
}
}
users
및 items
각각뿐만 아니라 자신의 컬렉션을 가지고있다.
예제 입력 문서를 추가 할 수 있습니까? – profesor79
좋아, 이야기 컬렉션에서 예제 문서를 추가했습니다. – inorganik
'item.id'의 접두사는'$'로해야합니다. '$ id' 단계를'_id : '$ item.id'로 변경하십시오. – styvane