Je vais d'abord présenter le cas pour que tout le monde puisse comprendre ce que je veux dire :
/a/1190000004157112
Le lien ci-dessus est une requête sqlgroup ordinaire, mais le problème que je rencontre maintenant est d'utiliser mongo pour effectuer une requête de groupe
La requête d'agrégation me tue vraiment. Voici les données simulées :
(Veuillez pardonner mes données, il est décomplexé et gratuit)
{
"_id" : ObjectId("590c15751f70bd329f8a972d"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "nurse",
"version" : "1.1。2。2",
"message" : "范德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:29.300Z")
}
{
"_id" : ObjectId("590c15751f70bd329f8a972e"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "nurse",
"version" : "1.1。2。2",
"message" : "范德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:29.447Z")
}
{
"_id" : ObjectId("590c157b1f70bd329f8a972f"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "bed",
"version" : "1.1。2。2",
"message" : "范1123德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:35.731Z")
}
{
"_id" : ObjectId("590c157c1f70bd329f8a9730"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "bed",
"version" : "1.1。2。2",
"message" : "范1123德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:36.164Z")
}
{
"_id" : ObjectId("590c158a1f70bd329f8a9733"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "room",
"version" : "1.1.112",
"message" : "范1123德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:50.082Z")
}
{
"_id" : ObjectId("590c158a1f70bd329f8a9734"),
"_class" : "com.birdnest.model.AppPublish",
"user" : "admin",
"deviceType" : "room",
"version" : "1.1.112",
"message" : "范1123德萨312313213213范德萨",
"creation" : ISODate("2017-05-05T06:02:50.238Z")
}
Les exigences sont les suivantes
Classez selon le type d'appareil et obtenez le dernier numéro de version de chaque catégorie
Le résultat que je veux est comme ça
/* 1 */
{
"deviceType" : "bed",
"version" :"1.1.112")
}
/* 2 */
{
"deviceType" : "room",
"version" :"1.1.112")
}
/* 3 */
{
"deviceType" : "nurse",
"version" : "1.1.112")
}
La déclaration suivante a été écrite par moi-même, mais il y a de nombreux problèmes
Bien que j'aie fait ce que j'ai écrit, le résultat souhaité n'a pas pu être affiché
db.appPublish.aggregate(
{$group : {_id :"$deviceType",creation : {$max : "$creation"}}}
);
1._id ne peut pas être mappé à un objet
2.version ne peut pas être écrit en groupe
Je ne comprends vraiment pas cette syntaxe
Le résultat
/* 1 */
{
"_id" : "bed",
"creation" : ISODate("2017-05-05T06:02:44.750Z")
}
/* 2 */
{
"_id" : "room",
"creation" : ISODate("2017-05-05T06:02:50.397Z")
}
/* 3 */
{
"_id" : "nurse",
"creation" : ISODate("2017-05-05T06:02:29.447Z")
}
_id
n'est bien sûr pas mappé au vrai_id
. Le_id
fait ici référence à la clé dugroup
.Je ne sais pas quelle est la relation entre votre
version
et votrecréation
création
Un document relativement volumineux doit êtreversion.
Est-ce relativement nouveau ? Si cette condition est vraie, vous pouvez faire ceci :_id
当然映射不到真正的_id
上,这里的_id
指的是group
的key。不清楚你的
version
和creation
是什么关系,creation
比较大的文档version
一定是比较新吗?如果这个条件成立的话,可以这样做:$first
即group
之后取第一个元素。而事先已经按creation
rrreee$first
est le premier élément aprèsgroup
. Les éléments ont été triés parcréation
à l'avance, le premier est donc le dernier élément. 🎜