2012-11-15 17 views
8

Ho una relazione molti a molti usando mangusta, che assomiglia a questo.Evita voci duplicate sull'array Mongoose

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

Quello che voglio fare è assicurarsi che un giocatore non compaia due volte in una squadra.

Quando faccio:

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

Se ho già aggiunto il giocatore prima, vedo i giocatori id due volte sul doc squadra. C'è una specie di bandiera mongo/mongoose che posso impostare in modo che il metodo di salvataggio generi un'eccezione o non aggiunga il giocatore. So che potrei fare il controllo a mano, ma preferirei una soluzione più semplice.

Grazie!

risposta

20

utilizzare l'operatore $addToSet aggiornamento in questo modo:

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

Supponendo player è l'ObjectId di un giocatore, sarà aggiunto solo players serie della squadra se non è già presente.

5

Basta utilizzare addToSet metodo:

team.players.addToSet(player) 
team.save() 
Problemi correlati