Mongodb集合插入忽略唯一索引

时间:2016-04-13 05:04:11

标签: javascript node.js mongodb docker mongoose

我有以下图像模型,使用两个独特的索引构建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

0 个答案:

没有答案