子文档属性的唯一索引

时间:2017-07-31 17:59:50

标签: mongodb mongoose

我正在尝试在我的子文档User中为属性userID设置唯一索引,并在我的类架构中用作数组。索引应该是针对每个类而不是所有类的全局索引。

因此,A类应该能够拥有用户ID [1,2,3,4]和B类[2,3,4,7,9]。 不应该被允许的是:A类[1,2,2,3] 以下查询给出了一个例外:

  

E11000重复键错误集合:app.classes索引:   _users.userID_1 dup key:{:1.0}

查询

db.classes.update(
  { _id: ObjectId("597f6864694ff43ddca09eaf") },
  { $push: { _users: {userID: 1}}} 
);

模式

var userSchema = new Schema({
    userID:             {type: Number, unique: true}, 
    // ...
};

mongoose.model('User', userSchema);

var classSchema = new Schema({
    _users:         {type: [userSchema]},
    // ...
});

mongoose.model('Class', classSchema);

db.class.find({});

[
  {
    "_id": "597df15eb0b0bd17c985df05",
    "_users": [
      {
        "_id": "597e9d373f01d64b66b9249f",
        "userID": 1,
      },
      {
        "_id": "597f6892694ff43ddca09eb0",
        "userID": 2,
      }
    ],
  },
  {
    "_id": "597f6864694ff43ddca09eaf",
    "_users": [],
  }
]

0 个答案:

没有答案