Предположим, что я есть две следующие схемы:Mongoose - Удалить дубликаты из результатов запроса
var SchemaOne = new mongoose.Schema({
created_at: { type: Date },
schemaTwo: { type: mongoose.Schema.Types.ObjectId, ref: 'SchemaTwo' },
ancestor: { type: mongoose.Schema.Types.ObjectId, ref: 'SchemaOne' }
});
var SchemaTwo = new mongoose.Schema({
headline: { type: String, required: true }
});
То, что я хотел бы сделать: для каждого SchemaOne
документа с тем же предка, как один при условии, возвращающие SchemaTwo
«ю.ш. заголовок, к которому они привязаны (если есть), принимая во внимание, что результаты запроса не должны возвращать дубликаты и должны быть ограничены 15 результатами, отсортированными по убыванию SchemaOne
created_at
.
Я начал делать следующее:
SchemaOne
.find({ 'ancestor': ancestor })
.sort({ 'created_at': -1 })
.populate({ path: 'schemaTwo', select: 'headline', options: { limit: 15 } })
.exec(function(err, docs) {
// do something with the results
});
Но, делая это, я все еще получаю дублирующиеся результаты, то есть, у меня будет несколько SchemaOne
документов, связанных с тем же SchemaTwo
документа.
Можете ли вы мне помочь, как это решить?
Как это выполнить, когда вы делаете первый агрегат с последующим контуром findById? Вы все еще используете это или улучшаете это? – runios