저장할 때 위와 같이 ID 5의 사용자가 채팅한 사람, 즉 사용자 3과 4가 누구인지 알고 싶습니다. 이제 이 사용자와 콘텐츠를 포함한 정보를 얻으려고 합니다. 사용자 3과 같은 레코드에서 얻고 싶은 것은 위의 내용이 아닌 Guo Degang의 내용입니다. mongodb 초보자, 공 도움말
이것은 매우 일반적인 그룹화 TOP N 문제이며, SQLServer의
TOP N
MongoDB에서 aggregation를 이용하면 해결 가능합니다. aggregation은 큰 주제이므로 여기서 모든 내용을 설명할 수는 없습니다. 아래에서 사용되는 다양한 연산자를 이해하려면 설명서만 확인하면 됩니다.
aggregation
몇 가지 설명:
{$sort: {_id: -1}}을 사용하는 것은 실제로 시간 역순입니다. _id에는 시간이 포함되어 있으며 대부분의 시간은 정렬 시간으로 간주될 수 있습니다.
{$sort: {_id: -1}}
_id
$first이 첫 번째 요소를 가져옵니다. 처음 n개의 요소를 가져오고 싶다면 어떻게 해야 할까요? $push+$slice 괜찮습니다
$first
$push
$slice
위 쿼리를 어떻게 더 빠르게 만들 수 있나요? db.chat.createIndex({current_uid: 1, _id: 1})
db.chat.createIndex({current_uid: 1, _id: 1})
이것은 매우 일반적인 그룹화
과 같은 SQL 데이터베이스에는 해당 표현식이 있습니다. 으아악TOP N
문제이며, SQLServer의MongoDB에서
으아악aggregation
를 이용하면 해결 가능합니다.aggregation
은 큰 주제이므로 여기서 모든 내용을 설명할 수는 없습니다. 아래에서 사용되는 다양한 연산자를 이해하려면 설명서만 확인하면 됩니다.몇 가지 설명:
{$sort: {_id: -1}}
을 사용하는 것은 실제로 시간 역순입니다._id
에는 시간이 포함되어 있으며 대부분의 시간은 정렬 시간으로 간주될 수 있습니다.$first
이 첫 번째 요소를 가져옵니다. 처음 n개의 요소를 가져오고 싶다면 어떻게 해야 할까요?$push
+$slice
괜찮습니다위 쿼리를 어떻게 더 빠르게 만들 수 있나요?
db.chat.createIndex({current_uid: 1, _id: 1})