Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Mongodb] Equivalente di ON DUPLICATE KEY UPDATE

    ciao!

    in una collection ho impostato un campo come chiave univoca.
    io vorrei fare in modo che se al db arriva un valore che già esiste, viene fatto l'update degli altri campi.
    in sostanza l'ON DUPLICATE KEY UPDATE dei mysql.

    sapete se è possibile fare una cosa del genere in mongodb?
    in caso non sia possibile, secondo voi come mi conviene procedere??

  2. #2
    ok risolto usando update e l'opzione upsert.
    vi posto un esempio in nodejs, visto che le sue funzioni e quelle di mongodb si chiamano allo stesso modo:
    codice:
                var document = {
                    "as": req.body.as,
                    "city": req.body.city,
                    "country": req.body.country,
                    "countryCode": req.body.countryCode,
                    "isp": req.body.isp,
                    "lat": req.body.lat,
                    "lon": req.body.lon,
                    "org": req.body.org,
                    "query": req.body.query,
                    "region": req.body.region,
                    "regionName": req.body.regionName,
                    "status": req.body.success,
                    "timezone": req.body.timezone,
                    "zip": req.body.zip
                };
                var documentUpdate = {"query": req.body.query, "lat": req.body.lat, "lon": req.body.lon};
    
                collection.update(documentUpdate, document, {upsert: true}, function (err, records) {
                    if (err) {
                        console.log("Impossibile effettuare l'inserimento: ", err);
                    } else {
                        console.log(document);
                    }
                });
    ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.