使用Mongoose和node.js的最佳分类策略
我已经定义了一个包含3个types为Date:created_on,updated_on和date的字段的mongoose文档。 只有后者被用户修改,而其余的被自动设置在后端。
var NoteSchema = new Schema({ user: { type: String, default: 'anonymous', trim: true }, comments: { type: String, default: '', trim: true }, date: {type: Date, default: function (){ return moment.utc() }, required: true}, created_on: {type: Date, default: function (){ return moment.utc() } }, updated_on: {type: Date, default: function (){ return moment.utc() } }, deleted: {type: Boolean, default: false } });
这些数据正在被移动应用程序使用,并恢复数据。 后端正在使用此sorting选项返回数据:
options.sort = { date: -1, created_on: -1 }
目前只有很less的文件,因为它不是在生产,但我想知道这个sorting策略是否符合应用程序在生产时的要求。 唯一的要求是向用户显示他们的最新笔记,但考虑到他应该能够浏览他的笔记(最多6个月)。 这与Facebook应用显示内容更新的方式类似。 该应用程序加载最新的X文件,如果用户想看到较旧的,他必须滚动和滚动…
我正在考虑实施一个分页系统,避免由于大量跳过时的性能问题而使用“跳过”。 也许一个好的策略是使用.limit(MAX_DOCUMENTS),以_id:-1sorting,并以这种方式请求文档:
Note.find({_id: {$lt: older_id }}).sort({_id: -1}).limit(MAX_DOCUMENTS);
通过这种方式,客户端(应用程序)应该以不同的方式执行第一个查询,接下来就是前一个查询。
例如:
-
第一个查询:
Note.find().sort({_id: -1}).limit(10);
-
保持旧的
_id
(又名10th_id) -
下一个查询:
注意({_ id:{$ lt:id_previously_kept}})。sort({_ id:-1})。limit(10);
有关于此的任何build议?