sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose update 'kan inte använda delen (..) för att korsa elementet

Försök att använda positionella $ operatör i uppdateringen som identifierar ett element i en array som ska uppdateras utan att explicit specificera elementets position i arrayen, men detta kommer bara att matcha ett element åt gången:

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

Från dokumenten , den positionella $-operatorn fungerar som en platshållare för det första elementet som matchar frågedokumentet, och arrayfältet måste visas som en del av frågedokumentet, därav frågedokumentet

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

innehåller device array och kommer att matcha de dokument där device array id är inte lika med deviceID och namnet är inte detsamma som namnet som du försöker uppdatera. Detta kommer även att matcha dokument där device arrayen är tom.



  1. MongoDB cursor.count()

  2. Importera mer än 1 json-fil med mongoimport

  3. Mapreduce i mongodb ruby ​​infödd drivrutin

  4. hur man använder aggregatfunktion i meteor