Я делаю приложение node.js - Ornament Manager с использованием MongoDB и mon goose.
У меня есть коллекция со следующей схемой: -
var DetailsSchema = new Schema({
owner: {type:Schema.Types.ObjectId, ref: 'owner', required:true},
ornament: {type:Schema.Types.ObjectId, ref:'Ornament', required:true},
location:{type:Schema.Types.ObjectId, ref:'Location', required:true},
date: {type:Date, required:true, default: Date.now()}
Every Когда владелец удаляет орнамент из определенного местоположения, запись будет вставлена в коллекцию, а не обновлена для работы истории. Я хотел бы вернуть все орнаменты, присутствующие в данном месте.
Details.find({location: req.params.id},'ornament')
.populate('ornament')
.exec((err,results)=>{
if(err){return next(err);}
res.render('location_detail',{results:results})
})
Это возвращает все орнаменты, которые присутствовали и также присутствовали в какой-то момент времени. Чтобы устранить избыточность и неправильные данные, я хочу вернуть только те поля, которые имеют самую последнюю дату (для документов, имеющих одинаковые ownerID и ornamentID) и присутствующие в locationID: req.params.id
Любой обходной путь будет быть оцененным.