我有一些代码,如下所示。我在Mongo中的关键字集合中大约有6万个条目。我真的只想要前25名,所以我试图设定一个极限值。我正在运行相同的查询以打印出我的结果数量。由于某种原因,该限制似乎不起作用,因为我的日志消息显示为60K左右。
这样的事情不可能吗?我可以在有效的客户端上设置一个限制,但是我想我会尝试限制服务器上的内容,以减少发送的数据量。
一些其他信息:
任何帮助将不胜感激。
if (Meteor.isServer) {
Meteor.startup(function() {
console.log('server startup');
Meteor.publish("keyword_hits", function() {
console.log('keywords: ' + Keywords.find({}, {sort: {count:-1}, limit:25}).count());
return Keywords.find({}, {sort: {count:-1}, limit:25});
});
});
最佳答案
借助Meteor随附的Mongo API,.count()
无需考虑Limits
或Skips
,因此您所看到的将始终是集合中的最大数量。
如果你这样做
Meteor.publish("keyword_hits", function() {
console.log('keywords: ' + Keywords.find({}, {sort: {count:-1}, limit:25}).fetch().length);
return Keywords.find({}, {sort: {count:-1}, limit:25});
});
因此,您可以调用
.count()
而不是.fetch()
来返回从集合中选择的25个条目,然后对其调用.length
,您将看到返回了正确数量的条目。我实际上开了一个有关.count()的问题,因为在普通的Mongo中,您可以执行:
.count({'applySkipLimit': true});
,它将考虑到您的跳过和限制。无论如何,那是你的问题。
关于performance - 限制服务器端“ meteor ”中的结果数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095603/