sql >> Database >  >> NoSQL >> MongoDB

Mongoose-update 'kan het onderdeel (..) niet gebruiken om het element te doorkruisen'

Probeer de positionele $ te gebruiken operator in de update die een element in een array identificeert dat moet worden bijgewerkt zonder expliciet de positie van het element in de array op te geven, maar dit zal altijd maar met één element tegelijk overeenkomen:

 User.update(
    { 
        "local.email": user,
        "devices.id": { "$ne": deviceID },
        "devices.name": { "$ne": deviceName }
    }, 
    { 
        "$set": { 
            "devices.$.id": deviceID,
            "devices.$.name": deviceName 
        }
    } 
);

Van de docs , de positionele $ operator fungeert als een tijdelijke aanduiding voor het eerste element dat overeenkomt met het querydocument, en het matrixveld moet verschijnen als onderdeel van het querydocument, vandaar het querydocument

"devices.id": { "$ne": deviceID },
"devices.name": { "$ne": deviceName }

bevat het device array en komt overeen met die documenten waar het device array id is niet gelijk aan deviceID en de naam is niet hetzelfde als de naam die u probeert bij te werken. Dit komt zelfs overeen met documenten waar het device array is leeg.



  1. System.Type opslaan met MongoDb

  2. Redis Update gesorteerde set bij verlopen sleutel

  3. Hoe gebruik je django samen met mongoengine?

  4. Batch invoegen MongoDB en NodeJs