{
"_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,球帮助
Il s'agit d'un problème de regroupement très typique
de SQLServer.TOP N
, et il existe des expressions correspondantes dans les bases de données SQL, telles queCe problème peut être résolu en utilisant
aggregation
dans MongoDB.aggregation
est un gros sujet, et je ne peux pas expliquer tout le contenu ici. Vous pouvez uniquement consulter la documentation pour comprendre les différents opérateurs utilisés ci-dessous.Quelques explications :
L'utilisation de
{$sort: {_id: -1}}
est en fait l'ordre chronologique inverse._id
contient du temps, et la plupart du temps son tri peut être considéré comme du temps de tri$first
obtient le premier élément. Et si vous souhaitez prendre les n premiers éléments ?$push
+$slice
c'est bienComment la requête ci-dessus peut-elle être effectuée plus rapidement ?
db.chat.createIndex({current_uid: 1, _id: 1})