亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

貓鼬自動遞增

貓鼬自動遞增

慕森卡 2019-10-30 10:21:37
根據此mongodb文章,可以自動增加字段,我想使用counters收集方式。該示例的問題在于,我沒有成千上萬的人使用mongo控制臺在數據庫中鍵入數據。相反,我正在嘗試使用貓鼬。所以我的架構看起來像這樣:var entitySchema = mongoose.Schema({  testvalue:{type:String,default:function getNextSequence() {        console.log('what is this:',mongoose);//this is mongoose        var ret = db.counters.findAndModify({                 query: { _id:'entityId' },                 update: { $inc: { seq: 1 } },                 new: true               }        );        return ret.seq;      }    }});我已經在同一數據庫中創建了counters集合,并添加了一個帶有'entityId'的_id的頁面。從這里,我不確定如何使用貓鼬更新該頁面并獲取遞增編號。沒有計數器的架構,我希望它保持這種狀態,因為這實際上不是應用程序使用的實體。僅應在模式中使用它來自動遞增字段。
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

這是一個示例,如何在Mongoose中實現自動遞增字段:


var CounterSchema = Schema({

    _id: {type: String, required: true},

    seq: { type: Number, default: 0 }

});

var counter = mongoose.model('counter', CounterSchema);


var entitySchema = mongoose.Schema({

    testvalue: {type: String}

});


entitySchema.pre('save', function(next) {

    var doc = this;

    counter.findByIdAndUpdate({_id: 'entityId'}, {$inc: { seq: 1} }, function(error, counter)   {

        if(error)

            return next(error);

        doc.testvalue = counter.seq;

        next();

    });

});


查看完整回答
反對 回復 2019-10-30
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

您可以mongoose-auto-increment按以下方式使用包:


var mongoose      = require('mongoose');

var autoIncrement = require('mongoose-auto-increment');


/* connect to your database here */


/* define your CounterSchema here */


autoIncrement.initialize(mongoose.connection);

CounterSchema.plugin(autoIncrement.plugin, 'Counter');

var Counter = mongoose.model('Counter', CounterSchema);

您只需要初始化autoIncrement一次。


查看完整回答
反對 回復 2019-10-30
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

投票最多的答案不起作用。解決方法是:


var CounterSchema = new mongoose.Schema({

    _id: {type: String, required: true},

    seq: { type: Number, default: 0 }

});

var counter = mongoose.model('counter', CounterSchema);


var entitySchema = mongoose.Schema({

    sort: {type: String}

});


entitySchema.pre('save', function(next) {

    var doc = this;

    counter.findByIdAndUpdateAsync({_id: 'entityId'}, {$inc: { seq: 1} }, {new: true, upsert: true}).then(function(count) {

        console.log("...count: "+JSON.stringify(count));

        doc.sort = count.seq;

        next();

    })

    .catch(function(error) {

        console.error("counter error-> : "+error);

        throw error;

    });

});

該選項的參數為您提供了更新的結果,如果它不存在,它會創建一個新文檔。您可以在此處查看官方文檔。


如果您需要排序索引,請查看此文檔


查看完整回答
反對 回復 2019-10-30
  • 3 回答
  • 0 關注
  • 701 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號