我使用meteor sitemaps包使用以下代码生成站点地图:
Meteor.methods({
sitemapsGenerator: function (generateAnyway) {
var setting = Settings.findOne({ title: 'sitemapsLastGenerateDate'});
if (generateAnyway || (new Date(setting.lastModified.getTime()+(24*60*60*1000)) < new Date)) {
console.log("sitemap generator called");
var generalSitemapUrls = [];
for (var i = 0; i <= Math.round(MyPosts.find().count() / 10000); i++) {
sitemaps.add('/sitemap' + i + '.xml', (function (i) {
var out = [];
MyPosts.find({}, {
fields: {title: 1, postDate: 1},
sort: {postDate: 1}, limit: 10000, skip: i * 10000
}).forEach(function (post) {
console.log("sitemap called" + i);
out.push({
page: "/posts/" + post.title + "/" + post._id,
lastmod: post.postDate,
changefreq: 'weekly'
});
});
return out;
})(i));
}
Settings.update({title: "sitemapsLastGenerateDate"}, {$set: {lastModified: new Date} });
}
}
});
2个月后,我的收藏规模在不断增长,最近我在尝试生成网站地图时遇到了以下错误:
MongoError: too much data for sort() with no index. add an index or
specify a smaller limit.
解决此错误的解决方案是什么?
如果通过向集合字段添加索引来修复此错误,如何在meteor中执行此操作?
答案 0 :(得分:1)
在您的集合对象上使用ensureIndex。通常,您在启动时在服务器端执行此操作。