MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Impossibile aggiornare i dati in mongodb

Il tuo update l'istruzione non è corretta, contiene argomenti fuori posto - stai inserendo più $set operazioni e opzioni come parametri diversi dal metodo di aggiornamento; dovrebbero trovarsi in parametri di aggiornamento designati separati. La corretta sintassi di Node.js è:

update(selector, document, options, callback)

dove selector è un oggetto che è il selettore/query per l'operazione di aggiornamento, document è anche un oggetto che è il documento di aggiornamento e infine un options oggetto che per impostazione predefinita è nullo e ha le impostazioni di aggiornamento facoltative.

Ecco che stai facendo

update(selector, document, selector, document, options, options, callback)

In cui mongo sta aggiornando la raccolta utilizzando i primi due parametri come corretti e genera naturalmente l'errore

perché sono stati specificati troppi parametri errati.

Inoltre, hai un uso errato dell'operatore posizionale. Dovrebbe essere parte del documento da aggiornare, non nella query.

Per la corretta implementazione, segui questo aggiornamento

db.getCollection('profiles').update(
    /* selector  */
    {
        "_id": ObjectId("57a9aa24e93864e02d91283c"),
        "ratings.round": 1
    }, 
    /* update document */
    {
        "$set": {
            "presentRound": 2,
            "interviewStatus": "in process",
            "scheduleInterviewStatus": false,
            "ratings.$.roundStatus": "selected"    
        }
    },
    /* optional settings */
    { upsert: true, multi: true }
)