我试图创建一个猫鼬模型如下:
var bookschema = mongoose.Schema({
path: {
type: String,
unique: true
},
dir: String,
filename: String,
size: String,
type: String,
related: Array
});
var Books = mongoose.model('Books',bookschema);现在,我第一次输入数据是通过Model.create,的数据集数组有重复的键。
因此,没有创建上面的“路径”索引。Mongoose在构建路径索引时报告了一个错误,但是Mongoose没有显示错误。但是,(删除数据库后),如果我尝试一个小数据集(没有重复的路径值),则索引将被正确构建。
在这样的用例中,什么是强制唯一索引在第一次通过Mongoose插入之前构建的最佳方法?另外,你认为我应该把这件事报告给猫鼬吗?
发布于 2014-11-18 19:09:36
通过模型上的'index'事件报告索引错误。因此,要查看在为Books创建索引期间发生的任何错误,可以添加以下内容:
Books.on('index', function(err) {
if (err) {
console.error('Books index error: %s', err);
}
else {
console.info('Books index complete');
}
});要强制创建唯一的索引,可以将dropDups选项添加到索引定义中,但要谨慎使用,因为它将永久删除任何重复的索引。
var bookschema = mongoose.Schema({
path: {
type: String,
index: {unique: true, dropDups: true}
},
dir: String,
filename: String,
size: String,
type: String,
related: Array
});发布于 2014-11-18 18:46:26
我建议你用终端和芒果来设置你唯一的索引。打开一个终端并键入以下内容:
mongo
use your_db_name
db.books.ensureIndex( { path: 1 }, { unique: true } )您可以阅读更多有关此这里的信息。
https://stackoverflow.com/questions/27001386
复制相似问题