node.js - Mongoose 按分数索引

标签 node.js mongodb sorting indexing mongoose

我正在尝试在 mongoose 中创建排行榜,但在通过分数递增来索引我的分数模式时遇到了问题。

这是我的代码:

db.once('open', function callback () {
 console.log('Successfully connected to MongoDB');
 var scoresSchema = new Schema ({
  score: Number,
  user: String
 }, {autoIndex: false});

 scoresSchema.index({ user: 1, score: -1 });

 StatScore = mongoose.model('Score', scoresSchema);
});

它的输出如下

[ { _id: 57715497860521f404cfebf0, score: 87, user: 'seth', __v: 0 },
  { _id: 577157151f39c2320548e6e5, score: 99, user: 'seth', __v: 0 },
  { _id: 57716a4613e701890608d18a, score: 97, user: 'seth', __v: 0 },
  { _id: 57716a7413e701890608d18b, score: 135, user: 'john', __v: 0 } ]

关于为什么排序不正确的任何想法?我一直在查看其他工作和示例,但看不出哪里出了问题。

最佳答案

你的问题不是很清楚,如果你对你的问题提出疑问可能会有用。但这里有一些可以帮助您的线索。

  • 您必须意识到您正在创建一个复合索引。这意味着索引将以用户作为第一个参数,然后是分数
  • 确保您正在调用排序 方法。通常认为索引将维护我们的集合在磁盘上的顺序。这不是真的。您可以将索引视为对集合中文档的引用表,该集合根据您在索引配置中设置的内容进行排序。因此,尽管您将索引配置为按分数 排序,但这并不意味着集合将在磁盘中排序,并且当您进行查询获取所有内容时,它将显示在数据在集合中的顺序不是您想要的顺序。

希望对您有所帮助。

此外,您还可以阅读我发现有用的有关 mongo 排序和索引的文档:mongo sort , mongo indexes .

关于node.js - Mongoose 按分数索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38060598/

相关文章:

node.js - 用于 Raspberry Pi ARM 的 Mongodb MongoClient.connect() 上的总线错误

node.js - 使用 fs.writeFile 时未定义值

php - Doctrine mongoDB 只获取一个字段

ios - 根据 NSString 日期对对象进行排序

bash - 仅按前两列对文件进行排序,并保持输入顺序,以防列具有相同的值

javascript - 如何在 node.js express 中使用 bodyParser 通过 AJAX 正确发送对象?

node.js - Netezza、NodeJS 和 unixODBC 有趣的错误

ruby-on-rails - 使用 Rails 提高性能以加载 3000 条记录?

mongodb - 在 WiredTiger 中对 MongoDb 文档执行部分更新是否比完整文档更新有任何优势?

javascript - 为什么 .sort() 在按字母顺序对某些数组进行排序时表现不正确?