mongodb - Comment $addToSet spécifie-t-il un champ comme champ de vérification d'existence?
ringa_lee
ringa_lee 2017-05-02 09:25:30
0
1
926

Il existe un document, et l'un de ses attributs est un tableau de documents. Je souhaite ajouter un document au tableau, s'il existe, il ne sera pas ajouté. Comment juger s'il existe ou non, c'est tous les attributs. sont les mêmes ? Pouvez-vous spécifier un attribut
{_id:0,
user:[{id:1,name:a}]
}
Par exemple, pour l'enregistrement ci-dessus, je souhaite ajouter des données à utilisateur, si l'identifiant est 1, cela signifie qu'il existe déjà, donc il ne sera pas ajouté, sinon il sera ajouté au tableau utilisateur
$addToSet peut répondre à cette exigence
Merci

ringa_lee
ringa_lee

ringa_lee

répondre à tous(1)
世界只因有你

L'unicité du sous-document dont vous avez besoin ne peut pas être obtenue par $addToSet. Il y a deux idées de référence :

1. Essayez de voir si vous pouvez créer un index composite unique en entreprise

Par exemple : créez un index composite unique sur le nom et l'user.id du texte {_id, name, number,user[{id,name}]}

2. Contrôle des codes

db.test.update({ "_id" : ObjectId(""), "user.id" : {$ne : value }}, {$push : { user : { id : 1 , name : "a" }}})

db.test.update({ "_id" : ObjectId(""), "user.id" : {$nin : [] }}, {$push : { user : { id : 1 , name : "a" }}})

Avant la mise à jour, utilisez $ne ou $nin pour déterminer si user.id existe dans l'identifiant existant. S'il n'existe pas, vous pouvez mettre à jour.

Pour référence.

J'adore MongoDB ! Amusez-vous !

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal