【发布时间】:2014-05-24 03:23:41
【问题描述】:
我想为mongodb 到mongoose 的集合中的两个字段设置主键。我知道将mongodb 中的复合主键设置为
db.yourcollection.ensureIndex( { fieldname1: 1, fieldname2: 1 }, { unique: true } )
但我使用mongoose 处理mongodb 我不知道如何从mongoose 设置复合主键
更新
我用mySchema.index({ ColorScaleID: 1, UserName: 1}, { unique: true });
看我的代码
var mongoose = require('mongoose')
var uristring ='mongodb://localhost/fresh';
var mongoOptions = { db: { safe: true } };
// Connect to Database
mongoose.connect(uristring, mongoOptions, function (err, res) {
if (err) {
console.log ('ERROR connecting to: remote' + uristring + '. ' + err);
} else {
console.log ('Successfully connected to: remote' + uristring);
}
});
var mySchema = mongoose.Schema({
ColorScaleID:String,
UserName:String,
Range1:Number,
})
mySchema.index({ ColorScaleID: 1, UserName: 1}, { unique: true });
var freshtime= mongoose.model("FreshTimeColorScaleInfo",mySchema)
var myVar = new freshtime({
ColorScaleID:'red',
UserName:'tab',
Range1:10
})
myVar.save()
mongoose.connection.close();
当我第一次执行此代码时,我在 mongodb 的新数据库中看到一行 {"_id":...,ColorScaleID:'red',UserName:'tab',Range1:10 }。当我第二次执行相同的代码时,我看到两条相同的行。
{"_id":...,ColorScaleID:'red',UserName:'tab',Range1:10 }
{"_id":...,ColorScaleID:'red',UserName:'tab',Range1:10 }
如果composite primary key 工作,那么它不应该允许我第二次插入相同的数据。会有什么问题?
【问题讨论】:
-
@JohnnyHK 我已经更新了我的问题,你能再看一下吗。
-
我在 mongodb shell 中实现了与 mongodb 查询相同的功能是
db.person.ensureIndex({ ColorScaleID: 1, UserName: 1}, { unique: true }),但不是使用 mongoosemySchema.index({ ColorScaleID: 1, UserName: 1}, { unique: true })。 -
@JohnnyHK - 我不认为这是重复的,因为他的定义是正确的,但这对他不起作用。
-
@Guy - 当时是这样,但从那以后它已经更新了。
标签: javascript node.js mongodb mongoose