5

进行“如果不存在则插入”的惯用方式是什么?

这可以在没有交易的情况下完成吗?

4

3 回答 3

3

尝试这个:

如果它不存在,则 with upsert 创建一条记录,除非它更新

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();

希望能帮助到你。

问候

于 2016-08-29T19:39:18.200 回答
1

例如,您可以使用此代码

db.query('select from v where rid = 23')
    .then(function (record) {
        if(record.length==0){
            db.query('insert into v(rid) values (23)');
        }
 });

希望能帮助到你。

于 2016-08-30T10:11:33.340 回答
0

如果数据非常小(您可以保存在服务器的内存中),您可以执行 1 个 get 调用来获取所有数据,并仅对那些不存在的数据执行批量插入。

如果您的创建数据非常大(超过运行时内存),您将不得不遵循 Alessandro 的方法(这会很慢,因为每次插入都必须检查)。

于 2018-09-11T13:27:20.720 回答