2012-11-15 11 views
8

Mam wiele do wielu relacji przy użyciu mangusty, która wygląda tak.Unikaj powtarzających się wpisów w tablicy Mongoose

TeamSchema = new Schema 
    name : String 
    players: [{ type: ObjectId, ref: 'Player' }] 

Chcę, aby jeden gracz nie pojawiał się dwa razy w zespole.

Kiedy zrobić:

team.players.push(player) 
team.save() 

Gdybym już dodane odtwarzacz przed widzę identyfikator gracze dwa razy na doc zespołu. Czy istnieje jakaś flaga typu mongo/mangusta, którą mogę ustawić, aby metoda składowania generowała wyjątek lub nie dodawała odtwarzacza. Wiem, że mogę zrobić czek ręcznie, ale wolałbym prostsze rozwiązanie.

Dzięki!

Odpowiedz

20

Użyj operatora $addToSet aktualizacji tak:

Team.update({_id: team._id}, {$addToSet: {players: player}}) 

Zakładając player jest ObjectId zawodnika, zostanie ona dodana do zespołu players tablicy, jeśli nie jest już obecny.

5

Wystarczy użyć addToSet metody:

team.players.addToSet(player) 
team.save() 
Powiązane problemy