sql >> Databáze >  >> NoSQL >> MongoDB

Aktualizace Mongoose 'nemůže použít součást (..) k procházení prvkem

Zkuste použít poziční $ operátor v aktualizaci, která identifikuje prvek v poli, který se má aktualizovat, aniž by explicitně specifikoval polohu prvku v poli, ale vždy se bude shodovat pouze s jedním prvkem:

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

Z dokumentů , poziční operátor $ funguje jako zástupný symbol pro první prvek, který odpovídá dokumentu dotazu, a pole pole se musí objevit jako součást dokumentu dotazu, tedy dokumentu dotazu

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

obsahuje device pole a bude odpovídat těm dokumentům, kde je device pole id se nerovná deviceID a název není stejný jako název, který se pokoušíte aktualizovat. To bude dokonce odpovídat dokumentům, kde je device pole je prázdné.



  1. Nelze se připojit k MongoDB Atlas (queryTxt ETIMEOUT)

  2. Jak získat přístup k vnořenému souboru pomocí typového skriptu Pick<>

  3. Volání REST API funguje pouze jednou

  4. Ořízněte dvojité uvozovky v json přijatém z mongoDB