У меня проблемы с индексированием в Mongoose. У меня есть поле employeeId, которое уникально. Когда я создаю документ сотрудника, он создает индекс «employeeId_1», а также обнаруживаю, что есть индекс «id». Я бы предположил, что это должно быть «_id». Может ли кто-то пройтись над тем, что я делаю неправильно? Вот код:Mongoose Indexing
var mongoose = require('mongoose');
var ObjectId = mongoose.SchemaTypes.ObjectId;
var eContactSchema = mongoose.Schema({
contacttype:{type: Number},
name:{type: String, required:true},
phone:{type: String, trim: true},
mail1:{type: String, trim: true},
mail2:{type: String, trim: true},
city:{type: String, trim: true},
state:{type: String, trim: true},
zip:{type: String, trim: true}
})
var eCourseSchema = mongoose.Schema({
course:{type: ObjectId, required:true, unique: true},
title:{type: String},
notes:{type: String, trim:true},
expire:{type: Date},
deleted: {type: Boolean, default: false}
})
var eAppSchema = mongoose.Schema({
appName:{type: String, required: true, trim: true},
view:{type: Boolean, default: false},
create:{type: Boolean,default: false},
edit:{type: Boolean,default: false},
del:{type: Boolean,default: false}
})
var employeesSchema = mongoose.Schema({
firstName:{type: String, trim:true, required:true},
lastName:{type: String, trim:true, required:true},
employeeId: {type: String, trim:true, required:true, unique: true},
active: {type: Boolean, default: true},
admin: {type: Boolean, default: false},
title: {type: String, trim:true},
pin:{type:String, trim: true},
contacts:[eContactSchema],
courses:[eCourseSchema],
apps:[eAppSchema]
})
module.exports = db.model('employees', employeesSchema,'employees');
Вот как я создаю документ.
exports.addEmployee = function (data, callback) {
employees.create(data, function (err) { callback(err) });
};
Это результаты getIndex. По какой-то причине я не могу воссоздать проблему, но вместе с этим будет еще один индекс с именем employeeId_1. Это приведет к дублированию ошибки в ключе employeeId_1.
[
{
"v": 1,
"key": {
"_id":1
},
"ns": "Management.employees",
"name": "_id_"
}
]
я не уверен, что вы просите. Можете ли вы изменить свой вопрос, чтобы включить вывод 'db.employees.getIndexes() из оболочки и что вы считаете неправильным? – JohnnyHK