mongodb储存即时聊天的时候如何取出用户聊天列表
仅有的幸福
仅有的幸福 2017-05-02 09:20:07
0
1
614
{
        "_id" : ObjectId("576cfd363325ffaa1dbdde15"),
        "current_uid" : "5",
        "to_uid" : "3",
        "content" : "你大爷"
    },
    {
        "_id" : ObjectId("576cfd6e3325ff501e07f4ae"),
        "current_uid" : "5",
        "to_uid" : "3",
        "content" : "郭德纲"
    },
    {
        "_id" : ObjectId("576cfe753325ff501ea76603"),
        "current_uid" : "5",
        "to_uid" : "4",
        "content" : "325235"
    }

存的时候如上所示,想要获取用户ID为5的这个跟哪些人聊过天,也就是3和4这2个用户,现在想要获取包括content的信息,也就是跟该用户最新的一条记录,比如3这个用户,我要获取的就是郭德纲这个content而不是上面那条,这个应该怎么查询,初学mongodb,球帮助

仅有的幸福
仅有的幸福

모든 응답(1)
洪涛

이것은 매우 일반적인 그룹화 TOP N 문제이며, SQLServer의

과 같은 SQL 데이터베이스에는 해당 표현식이 있습니다. 으아악

MongoDB에서 aggregation를 이용하면 해결 가능합니다. aggregation은 큰 주제이므로 여기서 모든 내용을 설명할 수는 없습니다. 아래에서 사용되는 다양한 연산자를 이해하려면 설명서만 확인하면 됩니다.

으아악

몇 가지 설명:

  1. {$sort: {_id: -1}}을 사용하는 것은 실제로 시간 역순입니다. _id에는 시간이 포함되어 있으며 대부분의 시간은 정렬 시간으로 간주될 수 있습니다.

  2. $first이 첫 번째 요소를 가져옵니다. 처음 n개의 요소를 가져오고 싶다면 어떻게 해야 할까요? $push+$slice 괜찮습니다

  3. 위 쿼리를 어떻게 더 빠르게 만들 수 있나요? db.chat.createIndex({current_uid: 1, _id: 1})

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿