Я совершенно новой для NoSQL и изо всех сил, чтобы написать этот запрос Я использую Мангуст на Node.jsНайти последнюю запись на основании группы Mongoose
То, что я хочу добиться того, чтобы получить один последний результат на основе группы идентификатора устройства. У меня нетрудно написать это в SQL, но с трудом делаю это в NoSQL.
Вот настройка модели
_id DeviceID Coordinate:{lat, long}
1 2 lat: 1, long: 2
2 3 lat: 2, long: 3
3 1 lat: 3, long: 3
4 3 lat: 5, long: 4
5 2 lat: 7, long: 5
6 2 lat: 9, long: 6
7 3 lat: 111, long: 7
8 2 lat: 113, long: 8
Вывод, который я хочу это:
_id DeviceID Coordinate:{lat, long}
3 1 lat: 3, long: 3
7 3 lat: 111, long: 7
8 2 lat: 113, long: 8
Это то, что я пробовал, но результат у меня есть undefined
Примечание : beginDayID
, endDayID
являются переменными mongoose ObjectId представляет _id начала и конца дня.
mongoose.model('GPSData').aggregate([
{$match: {_id:{$gte: beginDayID, $lt: endDayID}}},
{$unwind: "$Coordinates"},
{$project: {DeviceID: '$DeviceID' }},
{$group: { DeviceID: '$DeviceID', $lat: '$Coordinates.lat', $long: '$Coordinates.long'}}
], (e, data) => {
console.error(e)
console.log(data)
if (e) return callback(e, null);
return callback(null, data);
})
См. Мой ответ - если это не сработает для вас, пожалуйста, покажите некоторые реальные образцы документов и ожидаемый результат, чтобы мы могли быть более конкретными. – DAXaholic