recherche

Maison  >  Questions et réponses  >  le corps du texte

mongodb - Comment $addToSet spécifie-t-il un champ comme champ de vérification d'existence?

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_leeringa_lee2788 Il y a quelques jours929

répondre à tous(1)je répondrai

  • 世界只因有你

    世界只因有你2017-05-02 09:27:30

    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 !

    répondre
    0
  • Annulerrépondre