Ich bin neu in MongoDB Welt.Erhalte die Aufzeichnung eines anderen Feldes mit Aggregat
Ich habe folgende Daten in meiner Sammlung
{
"_id" : ObjectId("5735d8d4d147aa34e440988f"),
"DeviceLogId" : "26962",
"DeviceId" : "10",
"UserId" : "78",
"LogDateTime" : ISODate("2016-05-12T07:52:44.000+0000")
}
{
"_id" : ObjectId("5735d8d4d147aa34e4409890"),
"DeviceLogId" : "26963",
"DeviceId" : "10",
"UserId" : "342",
"LogDateTime" : ISODate("2016-05-12T07:54:09.000+0000")
}
{
"_id" : ObjectId("5735d8d4d147aa34e4409891"),
"DeviceLogId" : "26964",
"DeviceId" : "10",
"UserId" : "342",
"LogDateTime" : ISODate("2016-05-12T07:54:10.000+0000")
}
{
"_id" : ObjectId("5735d8d4d147aa34e4409892"),
"DeviceLogId" : "26965",
"DeviceId" : "10",
"UserId" : "78",
"LogDateTime" : ISODate("2016-05-12T07:54:27.000+0000")
}
I DeviceId
jeden Benutzer mit maximal LogDateTime
mit Gruppe abfragen mag.
Ich habe Gruppe von Abfrage wie unten geschrieben, aber habe keine Ahnung, wie würde ich DeviceLogId
für jeden Datensatz bekommen.
collectionName.aggregate(
[{
$match: { LogDateTime: { $gt: todaysDateStart, $lt: todayDateEnd } }
}, {
$group: {
_id: "$UserId",
maxPunchTime: { $max: { $add: [ "$LogDateTime", 330*60000 ] } },
}
}])
In MSSQL, kann ich es einfach mit verschachtelter Abfrage, aber ich habe keine Ahnung, wie ich das in MongoDB erreichen würde.
Vielen Dank im Voraus.
Ich will nicht gesetzt von 'DeviceLogId'. Ich will nur eine 'DeviceLogId' mit maximaler' LogDateTime'. – shashwat
Haben Sie den Code getestet, den ich Ihnen gegeben habe? – Atchoum
Ja, ich habe es versucht. Es gibt mir eine Reihe von 'DeviceLogIDs'. Ich habe keine Ahnung, welche man auswählt. – shashwat