假设我有一个100000的集合条目。 那么每次只获取50个数据而不是100000个数据的方法是什么,因为调用整个数据集是愚蠢的。 我的数据集就是这种类型:
{
"_id" : ObjectId("5a2e282417d0b91708fa83b5"),
"post" : "Hello world",
"createdate" : ISODate("2017-12-11T06:39:32.035Z"),
"__v" : 0
}
像我必须附加在查询上的技术是什么?
//What filter I have to add.?
db.collection.find({}).sort({'createdate': 1}).exec(function(err, data){
console.log(data);
});
答案 0 :(得分:1)
db.collection.find({}).sort({'createdate': 1}).skip(0).limit(50).exec(function(err, data){
console.log(data);
});
还有两种方法可以使用分页 一个是mongoose-paginate npm模块链接: - https://www.npmjs.com/package/mongoose-paginate
seconnd是带有$ skip和$ limit选项的聚合管道 例如:
//from 1 to 50 records
db.col.aggregate[{$match:{}},{$sort:{_id:-1}},{$skip:0},{$limit:50}];
//form 51 to 100 records
db.col.aggregate[{$match:{}},{$sort:{_id:-1}},{$skip:50},{$limit:50}];
答案 1 :(得分:0)
在find中使用限制
db.collection.find().limit(3)
使用限制与汇总,
db.collection.aggregate({$limit : 2})
如果我们需要将管道排除在外,通常使用聚合,例如我们需要将limit
和sort
放在一起,然后
// sorting happens only on the pipelined out put from limit.
db.collection.aggregate([{$limit : 50},{"$sort": {_id: -1}}]);
// . operator - sorting happening on entire values even though it comes last.
db.collection.find().limit(50).sort({_id:-1});
添加skip
以获得偏移量
db.collection.aggregate([{$limit : 50},{ $skip : 50 },{"$sort": {_id: -1}}]);
db.collection.find().skip(50).limit(50).sort({_id:-1});
答案 2 :(得分:0)
首先,我们必须对数据进行排序,然后限制并跳过功能。
db.collection.aggregate([{"$sort": {f2: -1}, {$limit : 2}, { $skip : 5 }}]);