【问题标题】:Mongoose count function to get index number of documentsMongoose count 函数获取文档的索引数
【发布时间】:2015-07-11 22:36:20
【问题描述】:

我正在编写一个将文档存储在 MongoDB 数据库中的应用程序。我希望有一个与自动生成的每个文档相关联的索引号。

我正在尝试计算数据库中当前的文档数并将索引号设置为该数。那么如何使用 Mongoose.js 的计数功能来实现呢?还是有更好的方法?

这是我的 document.js 文件:

var mongoose = require('mongoose');

var DocSchema = new mongoose.Schema({
    Title: String,
    Date: Date,
    Author: String,
});

mongoose.model('Doc', DocSchema);

【问题讨论】:

    标签: mongodb indexing count mongoose database-schema


    【解决方案1】:

    您还需要在架构中添加一个index 字段才能使其正常工作。

    var mongoose = require('mongoose');
    var DocModel = mongoose.model('Doc');
    
    var newDoc = new DocModel();
    newDoc.Title = 'Title of Book';
    newDoc.Date = new Date();
    newDoc.Author = 'Author Name';'
    
    DocModel.count().exec(function(err, count){
        newDoc.index = count;
        newDoc.save(function(err, result){
           if(err){
               console.log('Error saving new document');
               console.log(err);
               return;
           }
           console.log('New document created successfully!);
        });
    });
    

    【讨论】:

    • 请查看编辑并展示如何将您的代码添加到其中! @Matthew Antolovich
    • @axc 您是否要在架构级别设置索引?
    • 是的,正好在索引级别@Matthew Antolovich
    • @OneMoreQuestion 有几种不同的方法可以做到这一点。您可以发布您的架构,以便我可以为您的代码定制答案吗?另外,请记住,如果您从集合中删除一个文档,然后创建一个新文档,则新文档的索引字段将与第二个最新文档的索引值相同。您希望索引值始终是唯一的吗?我可以使新文档的索引比集合中的最高索引字段高一个数字,但是如果您删除文档,某些索引可能会丢失文档。
    • @OneMoreQuestion 如果您有 100 个文档,索引值范围为 0-100,并且您删除索引为 77 的文档,那么您将不再拥有索引为 77 的文档。它是可以更新所有文档的索引值来解决这个问题,但它必须更新每个文档的索引大于删除的索引。根据您的集合有多大以及文档被删除的频率,这可能会影响性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2015-06-14
    • 2018-05-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多