mongoose与模式密钥唯一重复

我想在整个集合中使关键项目独一无二,但是我无法得到这个工作,我在这里发现了类似的问题。

task.js

function make(Schema, mongoose) { var Tasks = new Schema({ project: { type: String, index: { unique: true, dropDups: true }}, description: String }); mongoose.model('Task', Tasks); } module.exports.make = make; 

test.js

 var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/rss'); var Schema = mongoose.Schema , ObjectId = Schema.ObjectId; require('./task.js').make(Schema, mongoose); var Task = mongoose.model('Task'); var newTask = new Task({ project: 'Starting new project' , description: 'New project in node' }); newTask.save(function(err) { if (err) console.log('Error on saving'); }); mongoose.disconnect(); 

当我运行与节点test.js的应用程序,仍然创build重复。

 MongoDB shell version: 2.0.2 connecting to: rss > db.tasks.find() > db.tasks.find() { "project" : "Starting new project", "description" : "New project in node", "_id" : ObjectId("4f21aaa3d48d4e1533000001") } { "project" : "Starting new project", "description" : "New project in node", "_id" : ObjectId("4f21aaa4d9a8921a33000001") } { "project" : "Starting new project", "description" : "New project in node", "_id" : ObjectId("4f21aaa57ebeea1f33000001") } 

/ /编辑仍然是同样的问题,这是我试图做的删除db.tasks.drop()收集重新启动mongo sudo停止mongodb并启动mongodb,再次运行该程序,仍然是同样的问题,它是如何允许索引重复的数据?

您正在传递的Schema对象可能无法正常工作,因为您将“unique”属性嵌套到“index”属性中,请尝试如下所示(按预期工作):

 User = mongoose.model('User', new Schema({ firstName: { type:String, required: true, }, lastName: { type:String, required: true, }, email: { type:String, required: true, unique: true }, address: String, phone: { type:String, required: true, }, password: { type:String, required: true, set: Data.prototype.saltySha1 // some function called before saving the data }, role: String },{strict: true})); 

或者更具体的为你的例子:

 var Tasks = new Schema({ project: { type: String, unique: true, index: true }, description: String }); 

注意:我不知道你要用“dropDups”参数来做什么,它似乎不在mongoose的文档中 。