鍍金池/ 問答/數(shù)據(jù)庫  HTML/ mongoose 如何設置自增字段?

mongoose 如何設置自增字段?

var room_schema = new mongoose.Schema({
    username: { type: String },
    room_num:{type:Number},
    room_name:{type:String}
})

room_num需要唯一Number字段,不自增也行,需要保證唯一性,求解~

回答
編輯回答
眼雜

MongoDB沒有自增字段。
你可以這樣,插入之前查詢一下最新的room_num,查詢之后+1就是本條數(shù)據(jù)的room_num

2017年7月7日 20:11
編輯回答
遲月

當初做博客的時候也遇到過這樣的問題。??梢栽囋囉脮r間戳啊。。

(new Date()).getTime();

不過注意,這個得到的字符串太長了,在數(shù)據(jù)庫中是以double數(shù)據(jù)類型存儲的

2017年12月15日 15:41
編輯回答
執(zhí)念

現(xiàn)在有更好的解決思路了嗎??

2017年1月21日 04:41
編輯回答
真難過

自增只能自己實現(xiàn)
MongoDB 自動增長

2017年1月27日 01:26
編輯回答
骨殘心

自增好像是沒有,但設置唯一索引肯定能保證唯一性

2017年4月12日 19:35
編輯回答
舊酒館

自問自答吧,想了一個取巧的辦法,在save之前查詢所有數(shù)據(jù),返回的是一個數(shù)組,數(shù)組的length本身就是自增,所以直接讓他等于數(shù)組length就可以了,不知道數(shù)據(jù)量大了之后會不會影響性能,水平有限,先這樣吧....

var room_schema = new mongoose.Schema({
    username: { type: String },
    room_num:{type:Number},
    room_name:{type:String}
})
var room_model = mongoose.model('room', room_schema);
room_model.find({},function(mst,msg){
                var room_num = msg.length
                var room = new room_model({
                    username:doc.username,
                    room_name:req.query.room_name,
                    room_num:room_num
                })
                room.save();
            })

clipboard.png

2017年5月31日 04:40
編輯回答
醉淸風

試試GUID,最后幾位是時間戳的話很難重復

2018年2月16日 17:07
編輯回答
亮瞎她
const Mongoose = require('mongoose');
const Schema = Mongoose.Schema;

let counter = 1;
let CountedId = {type: Number, default: () => counter++};

const ModelSchema = new Schema({
    id: CountedId,
    // ....
});

const Model = Mongoose.model('Model', ModelSchema);

module.exports = Model;

Model.find({ id: { $gt: 0 } }).sort({ id: -1 })
    .then(([first, ...others]) => {
        if (first)
            counter = first.id + 1;
    });

MongoDB 自增id (jarvis1024@gitee.com)

2017年7月19日 20:20