Arangodb 在ArangoJS进行批量升级?
我发现我可以Arangodb 在ArangoJS进行批量升级?,arangodb,arangojs,Arangodb,Arangojs,我发现我可以.save(objects),如果密钥不存在,它会创建对象。我发现我可以.bulkUpdate(objects)来更新存在密钥的对象 我的问题是:如何进行批量升级?如果密钥存在,则更新它(合并),如果不存在,则创建它 有没有一种方法可以在不增加大量开销的情况下做到这一点 这样做可以接受吗 db.collection("threads").bulkUpdate(keyedThreads); db.collection("threads").save(keyedThreads); RE
.save(objects)
,如果密钥不存在,它会创建对象。我发现我可以.bulkUpdate(objects)
来更新存在密钥的对象
我的问题是:如何进行批量升级?如果密钥存在,则更新它(合并),如果不存在,则创建它
有没有一种方法可以在不增加大量开销的情况下做到这一点
这样做可以接受吗
db.collection("threads").bulkUpdate(keyedThreads);
db.collection("threads").save(keyedThreads);
REST Insert具有覆盖选项。这可能就是你想要的 如果没有,您需要在2017年6月9日使用AQL UPSERT.(ArangoDB): Upsert仅通过AQL提供。没有collection.upsert方法 (ArangoDB)补充说: upsert的一个主要问题是访问旧数据。这可以很容易地在AQL中处理,但不能在对upsert端点的简单调用中处理。因此,我们决定反对这样的呼吁,而是在AQL中实施 看起来永远不会有
collection.bulkUpsert
的本机实现;但是,您可以使用AQL和函数创建自己的帮助器函数
类型脚本示例:
/**
*将文档的内容与给定的文档和
*(可选)返回包含文档元数据的数组。
*
*@param{string | ArangoDB.Collection}Collection-要使用的集合
*@param{Document[]}documents-要升级的文档列表
*@param opts?-可选地聚合结果{插入:编号,更新:编号}
*也看到https://www.arangodb.com/docs/stable/aql/operations-upsert.html
*/
导出异步函数bulkUpsert(
集合:字符串|文档集合,
documents:Array如果我错了,请纠正我的错误,但这不会替换文档而不是合并它们吗?@lukepihetti你是对的。如果你不只是想将数据从应用程序同步到数据库,你需要编写一个使用UPSERT语句的AQL查询。没有UPSERT REST/文档处理程序。