Как обеспечить уникальность в коллекции встроенного документа - PullRequest
0 голосов
/ 11 января 2012

У меня есть пользователь (документ), в котором я храню коллекцию друзей (встроенный документ).Я пытался убедиться, что для данного пользователя все его друзья уникальны (электронная почта должна быть уникальной).Однако это ограничение не является обязательным, и я не могу понять, почему.Кто-нибудь может мне помочь с этим?

Я использую Mongo 2.2 и Mongoose.

var FriendSchema = new mongoose.Schema({ 
    email            : { type: String, required: true, lowercase: true, trim: true }
  , name             : { type: String, trim: true }
});


var UserSchema = new mongoose.Schema({
    email            : { type: String, required: true, index: { unique: true }, lowercase: true, trim: true }
  , friends          : [FriendSchema]
});

UserSchema.index({ 'friend.email': 1 }, { unique: true });

1 Ответ

0 голосов
/ 11 января 2012

Уникальные индексы означают, что никакие другие документы не вставляются с тем же значением, указанным в индексе, это не относится к встроенным документам. Если вы попытались добавить foo@example.com к пользователям A и B, произойдет сбой из-за уникального индекса.

Вы должны применить это в Node.JS, а не пытаться сделать это с уникальным индексом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...