mongoose中嵌入文档的重复键错误索引

时间:2012-11-18 09:56:38

标签: javascript node.js mongodb mongoose

我正在尝试使用mongoose运行这个简单的嵌入式文档:

var mongoose = require('mongoose');
var PageSchema = new mongoose.Schema({
    url:String
});
var AlbumSchema = new mongoose.Schema({
    pages:[ PageSchema ]
});

mongoose.model('Album', AlbumSchema);
var Album = mongoose.model('Album');
var album = new Album({pages:[{url:"1"}]});
album.save(function(err, a) {
    console.log(err);
});

我第二次运行此代码后出现此错误:

{ 
    [MongoError: E11000 duplicate key error index: doalbums.albums.$pages.id_1  dup key: { : null }]
    name: 'MongoError',
    err: 'E11000 duplicate key error index: doalbums.albums.$pages.id_1  dup key: { : null }',
    code: 11000,
    n: 0,
    connectionId: 161,
    ok: 1 
}

我做错了什么?

1 个答案:

答案 0 :(得分:9)

我不确定你在这里做错了什么,但发生的事情是: 为字段'pages'创建索引,因此它不允许重复。要检查这一点,您可以在mongo shell doalbums.albums.getIndexes()中提供此命令(我认为您的数据库名称是 doalbums 和集合名称是专辑)这将列出“专辑”中的所有索引。 然后使用db.albums.dropIndex()删除不需要的索引。这将允许重复。 您可以参考http://docs.mongodb.org/manual/administration/indexes/