mongodb - regroupement de requêtes d'agrégation mongo, recherche de la valeur maximale
phpcn_u1582
phpcn_u1582 2017-05-17 10:02:55
0
1
989
  1. 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")
}
phpcn_u1582
phpcn_u1582

répondre à tous(1)
某草草

_id n'est bien sûr pas mappé au vrai _id. Le _id fait ici référence à la clé du group.
Je ne sais pas quelle est la relation entre votre version et votre création création Un document relativement volumineux doit être version. Est-ce relativement nouveau ? Si cette condition est vraie, vous pouvez faire ceci : _id当然映射不到真正的_id上,这里的_id指的是group的key。
不清楚你的versioncreation是什么关系,creation比较大的文档version一定是比较新吗?如果这个条件成立的话,可以这样做:

db.question.aggregate([
    {$sort: {creation: -1}},
    {$group : {_id :"$deviceType", version : {$first : "$version"}}},
    {$project: {deviceType: "$_id", version: "$version"}}
]);

$firstgroup之后取第一个元素。而事先已经按creation rrreee

$first est le premier élément après group. Les éléments ont été triés par création à l'avance, le premier est donc le dernier élément. 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal