使用Mongoose和node.js的最佳排序策略

使用Mongoose和node.js的最佳排序策略,node.js,mongodb,mongoose,query-performance,Node.js,Mongodb,Mongoose,Query Performance,我已经定义了一个mongoose文档注释,它包含3个类型为Date的字段:created_on、Update_on和Date。 只有后者由用户修改,其余的在后端自动设置 var NoteSchema = new Schema({ user: { type: String, default: 'anonymous', trim: true }, comments: { type: String, default: '', trim: true }, date: {type: Date,

我已经定义了一个mongoose文档注释,它包含3个类型为Date的字段:created_on、Update_on和Date。 只有后者由用户修改,其余的在后端自动设置

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 }
});
移动应用程序正在使用此数据,并将恢复数据。 后端正在使用此排序选项返回数据:

 options.sort = {
       date: -1,
       created_on: -1
 }
目前文档很少,因为它还没有投入生产,但我想知道这种排序策略是否适合应用程序投入生产时的要求。 唯一的要求是向用户显示他们最新的笔记,但要考虑到他应该能够浏览所有笔记(最多6个月)。 这类似于facebook应用程序显示内容更新的方式。该应用程序加载最新的x文档,如果用户想要查看较旧的文档,他必须滚动并滚动

我正在考虑实现一个分页系统,以避免由于大型跳过的性能问题而使用“跳过”。 也许一个好的策略是使用.limit(MAX_DOCUMENTS),按_id:-1排序,并通过以下方式请求文档:

Note.find({_id: {$lt: older_id }}).sort({_id: -1}).limit(MAX_DOCUMENTS);
通过这种方式,客户端(应用程序)应该以不同的方式执行第一个查询,然后执行前一个查询

例如:

  • 第一个查询:
    Note.find().sort({u id:-1}).limit(10)

  • 保留旧的
    \u id
    (也称为第10个\u id)

  • 下一个查询:

    Note.find({u id:{$lt:id{u先前{u保留}}).sort({u id: -1} )。限额(10)


  • 对此有什么建议吗?

    你是说内容懒散。。。我在nodejs中做了一个示例web项目,它将城市(超过20000个)从30个增加到30个。当您的滚动条到达窗口底部时,它会显示接下来的30个城市。你可以看看这里,我相信你已经找到了解决办法。这将是一个很好的问题,有在论坛上,如果你可以清理的问题是一个更直接的问题,并提供你的解决方案。