我有以下图像模型,使用两个独特的索引构建w / mongoose:
'use strict';
var mongoose = require('bluebird').promisifyAll(require('mongoose'));
var Schema = new mongoose.Schema({
name: String,
src: { type:String, unique: true },
height: String,
width: String,
importSrc: { type:String, unique: true },
status: String,
// Timestamps
createdAt: Date,
updatedAt: Date,
deletedAt: Date
});
Schema.pre('save', function(next){
var now = new Date();
if ( !this.createdAt ) {
this.createdAt = now;
}
this.updatedAt = now;
next();
});
Schema.index({'importSrc':1},{ unique: true, sparse: true });
export default mongoose.model('Image', Schema);
正如您所看到的,我已尝试以两种不同的方式设置唯一性。但是,在执行简单插入时,将忽略唯一性,并插入所有记录。
以下是我的简单插入操作:
var image = {
importSrc: 'unique-url.jpg',
src: 'whereImagesGo'
};
Image.collection.insert(image, (err,res) => {
if(!err && res.result.n > 0)
this.upload.report.image.inserts++;
else
this.upload.report.image.exists++;
complete(null);
});
我目前正在使用官方的mongo docker容器,它也运行mongo 3.2