【发布时间】:2019-12-03 21:55:22
【问题描述】:
我正在使用mongoose-plugin-autoinc,一个“mongoose-auto-increment 的分支”
有一段时间没有维护”为插入到我的集合中的每个文档创建从 0 开始的自动生成的索引 _id。
这是我的两个主要文件:
models.js
let informationAssetsrow = new Schema({
ref: {
type: String
},
dep: {
type: String
},
infAss: {
type: String
},
crJls: {
type: String
},
classification: {
type: String
},
bsOwn: {
type: String
},
dtOwn: {
type: String
},
cmts: {
type: String
},
//THIS IS HOW YOU CAN DEFINE YOUR OWN ID
/**
* truck_id: {
type: Schema.ObjectId, auto: true
}
*/
}, { // This is supposed to make mongoose ignore _id but it didn't
// when I declare _id it actually ignores it -_-
//_id: false
autoIndex: false
})
informationAssetsrow.plugin(autoIncrement, 'informationAssetsRow');
informationAssetsrow.plugin(autoIncrement, {
model: 'informationAssetsRow',
startAt: 0,
incrementBy: 1
});
server.js
router.route('/fillinformationAssets').post((req, res) => {
informationAssetsrow.insertMany([req.body[0], req.body[1], req.body[2], req.body[3], req.body[4], req.body[5], req.body[6]], {
multi: true
}).then(documentsInserted => {
console.log('documentsInserted: ', documentsInserted);
});
});
数据库中的结果是:
{
"_id": 1,
"ref": "FIRST",
"dep": "FIRST",
"infAss": "FIRST",
"crJls": "FIRST",
"classification": "FIRST",
"bsOwn": "FIRST",
"dtOwn": "FIRST",
"cmts": "FIRST",
"__v": 0
}, {
"_id": 3,
"dep": "TWO",
"ref": "TWO",
"infAss": "TWO",
"crJls": "TWO",
"classification": "TWO",
"bsOwn": "TWO",
"dtOwn": "TWO",
"cmts": "TWO",
"__v": 0
}, {
"_id": 2,
"ref": "THREE",
"dep": "THREE",
"infAss": "THREE",
"crJls": "THREE",
"classification": "THREE",
"bsOwn": "THREE",
"dtOwn": "THREE",
"cmts": "THREE",
"__v": 0
}
如您所见,文档是按顺序插入的(一、二、三)。
然而,
_id 索引
偶尔增加:
第一个文档得到 _id=1
第二个文档得到 _id=3
第三份文件 得到_id=2
当我需要订购它们以便正确访问和操作文档时。
有什么帮助吗?
【问题讨论】:
-
您是否尝试将
_id:false放入您的架构中并启用autoIndex。然后尝试仅使用truck_id: { type: Schema.Types.ObjectId}运行。尽管在您的truck_id {type}中,但您缺少.Types -
我想你误解了我的问题。我的问题是 _id 没有按 1-2-3-4 的顺序递增...
-
@ShivamSood 我找到了解决方案,请查看我的答案并告诉我您的想法
标签: node.js mongodb mongoose mongoose-auto-increment