Damit jeder versteht, was ich meine, werde ich zunächst den Fall vorstellen:
/a/1190000004157112
Der obige Link ist eine gewöhnliche SQLGroup-Abfrage, aber das Problem, auf das ich jetzt stoße, ist die Verwendung von Mongo zur Durchführung einer Gruppenabfrage
Aggregationsabfrage bringt mich wirklich um. Hier sind die simulierten Daten:
(Bitte verzeihen Sie meine Daten, er ist hemmungslos und frei)
{ "_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") }
Die Anforderungen lauten wie folgt: Klassifizieren Sie nach Gerätetyp und erhalten Sie die neueste Versionsnummer jeder Kategorie
Das Ergebnis, das ich möchte, ist so
/* 1 */ { "deviceType" : "bed", "version" :"1.1.112") } /* 2 */ { "deviceType" : "room", "version" :"1.1.112") } /* 3 */ { "deviceType" : "nurse", "version" : "1.1.112") }
Die folgende Aussage wurde von mir selbst geschrieben, aber es gibt viele Probleme
Obwohl ich getan habe, was ich geschrieben habe, konnte das gewünschte Ergebnis nicht angezeigt werdendb.appPublish.aggregate( {$group : {_id :"$deviceType",creation : {$max : "$creation"}}} );
Ich verstehe diese Syntax wirklich nicht
/* 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
当然映射不到真正的_id
上,这里的_id
指的是group
的key。不清楚你的
version
和creation
是什么关系,creation
比较大的文档version
一定是比较新吗?如果这个条件成立的话,可以这样做:$first
即group
之后取第一个元素。而事先已经按creation
排好序,所以第一个即是最新的元素。