让我们说我们的模型就像:
var schema = mongoose.Schema({
doc: String
});
var Schema = mongoose.model('Collection', schema);
doc不是唯一的,我们可以有很多相同的。现在我想查询10个具有唯一doc值的最新文档。 如果最新的10个文档具有相同的值,则只有一个应该被提取,而其他9个应该被提取。 忽略查询字段doc的唯一性,我们会有类似的东西:
Schema.find({}).sort({'_id': -1}).limit(10).exec(function(err, docs) {
// those docs here can have same value of doc field.
});
我现在用javascript做什么,解决了这种情况,但查询很重:
var same = {};
for (var i = docs.length - 1; i >= 0; i--) {
if(same[docs[i].doc]) docs.splice(i, 1);
else same[docs[i].doc] = true;
}
docs = docs.slice(0, 9);