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

Mongo può eseguire l'upsert dei dati dell'array?

Mi sono appena imbattuto in questo problema da solo. Non sono riuscito a trovare una soluzione a una chiamata, ma ho trovato una soluzione a due chiamate che funziona quando hai un valore univoco negli elementi dell'array . Usa il $pull prima il comando, che rimuove gli elementi da un array, e poi $push .

db.soup.update({
    "tester":"tom"
}, {
    $pull: {
        'array': {
            "id": "3"
        }
    }
})
db.soup.update({
    "tester":"tom"
}, {
    $push: {
        'array': {
            "id": "3",
            "letter": "d"
        }
    }
})

Questo dovrebbe funzionare quando il documento non esiste, quando il documento esiste ma la voce nell'array non esiste e quando la voce esiste.

Ancora una volta, funziona solo se hai qualcosa, come l'id campo in questo esempio, che dovrebbe essere univoco tra gli elementi dell'array.