3

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

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 
}

我究竟做错了什么?

4

1 回答 1

9

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

于 2012-11-20T10:48:50.307 回答