村农

莫笑农家腊酒浑,丰年留客足鸡豚。


mongodb及mongoose使用记录

TD-winter

1、使用mongoose时,要试某个字段的值唯一,则

var devSchema = new Schema({
    devName : {type:String,unique:true, dropDups: true},
    devID:String
    })

结果发现没用,原因是,unique字段是后来加上去的,则要去mongodb的shell脚本中执行命令

    db.集合名称.ensureIndex({"字段名称":1},{"unique":true});

结果还是报错:

> db.devs.ensureIndex({"devName":1},{"unique":true})
{
        "ok" : 0,
        "errmsg" : "E11000 duplicate key error collection: air.devs index: devName_1 dup key: { : \"84f3eb661c3f\" }",
        "code" : 11000,
        "codeName" : "DuplicateKey"
}

搜索得知:如果建立唯一索引的时候,有数据重复,则会报错,所以要先把重复的数据删除。然后再执行shell命令,结果正确:

> db.devs.ensureIndex({"devName":1},{"unique":true})
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}
>

然后mongoose中的设置也能正常使用。