2016-08-29 8 views

Antwort

0

Try this:

mit Upsert erstellt einen Datensatz, wenn es nicht vorhanden ist, es sei denn, es

aktualisiert
var 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

+0

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. –

1

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.

+0

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. –

Verwandte Themen