Was ist der idiomatische Weg, um eine "einfügen, wenn nicht existiert" zu machen?Wie machst du eine 'Einfügen wenn nicht existiert' mit orientjs?
Kann dies ohne Transaktionen geschehen?
Was ist der idiomatische Weg, um eine "einfügen, wenn nicht existiert" zu machen?Wie machst du eine 'Einfügen wenn nicht existiert' mit orientjs?
Kann dies ohne Transaktionen geschehen?
Try this:
mit Upsert erstellt einen Datensatz, wenn es nicht vorhanden ist, es sei denn, es
aktualisiertvar OrientDB = require('orientjs');
var server = OrientDB({
host: 'localhost',
port: 2424,
username: 'root',
password: 'root'
});
var db = server.use({
name: 'GratefulDeadConcerts',
username: 'root',
password: 'root'
})
db.query('UPDATE V SET id = 23 UPSERT WHERE id = 23')
.then(function (response) {
console.log(response);
});
server.close();
Hoffe, es hilft.
Grüße
Sie diesen Code beispielsweise
db.query('select from v where rid = 23')
.then(function (record) {
if(record.length==0){
db.query('insert into v(rid) values (23)');
}
});
Hoffe, es hilft nutzen können.
So mache ich es jetzt, aber es ist keine wirklich atomare Operation. Ich versuche, OrientDB für ein Streaming-Backend mit hohem Volumen zu verwenden, und es gibt immer noch Randfälle, in denen Duplikate aus dem Stream empfangen werden und beide versuchen einzufügen. Dies führt zu einem doppelten Schlüsselproblem mit dem Index. –
Vielen Dank für die Antwort. Ein Upsert ist nicht genau die gleiche Semantik, nach der ich suche. Ein Update erstellt eine neue Version des Dokuments, auch wenn alle Daten identisch sind. Nach was ich suche, ist eine Möglichkeit zu überprüfen, ob ein Datensatz vorhanden ist, nach ID, und dann eine Einfügung durchzuführen, wenn dies nicht der Fall ist. Es sollte ein "Noop" sein, wenn der Datensatz existiert. –