如何在PHP中检查arangodb中的集合总数
这就是我所尝试的:
$documents = $collectionHandler->all($collectionId);
var_dump($documents);
要获取当前集合的数量,可以使用CollectionHandler::getAllCollections()来实现此目的:
// create the connection as usual
$handler = new \triagens\ArangoDb\Collect
我有一个包含产品信息(SKU、型号、说明等)的数据库,我希望有一个相对快速的搜索功能,用户只需从任何文本字段中键入几个字母或一个单词,然后在任何这些字段中获得包含该短语的产品列表
数据库中的项目数可能不会超过100000
在不创建复杂查询的情况下,实现这一点最简单的方法是什么?听起来您在寻找自动完成。有很多方法可以做到这一点
索引
无论您选择何种解决方案,您都希望在数据上添加一些索引。我建议在您要搜索的所有内容中添加一个skiplist,并在任何长格式文本(如产品描述)上添加一个额外的全文索引。
我有一个arangodb集合中的产品数据库,其中一个产品有多种尺寸。问题在于,对于每种尺寸,都会重复使用相同的产品。但每种产品都有一个共同的组号。像这样:
{"name": "product1", "description": "someDescription", size: 5,price: 12 groupNumber: 12}
{"name": "product1", "description": "someDescription", size: 15, price: 26, groupN
为了测试故障切换场景和高可用性,我设置了主服务器和从服务器,主服务器现在不在了(断电),我的想法是我可以停止从服务器中的applier,然后在同一个从服务器中启动logger,将其升级为新的主服务器,并通过按照复制手册设置应用程序,创建一个新的从机以指向新的主机。只要我们将应用程序切换到指向新主机,以某种方式进行读/写,一切都会像以前一样正常
如果我们使用从设备作为备用设备,并且只使用主设备进行读/写操作,那么当我们切换到新的主设备时,这显然会导致一些停机时间。我还想知道,如果我们使用主/从复制
我已经在ArangoDB上评估了几天了。然而,今天吃过午饭回来后,我发现我的开发机器中的ArangoDB不再工作了。我不知道发生了什么事。在此之前,它运行良好。它发生在我从午餐后返回并尝试访问localhost:8529 web ui时,但没有成功,我尝试重新启动windows,操作系统提示我更新并重新启动。重新启动后,我也无法启动Arango Web界面
我尝试重新启动Arango服务,但似乎没有成功。供您参考,我使用的是Windows 8.1。我的ArangoDB版本是2.3.4。我还尝试使
我正在导出模型,如下所示:
var Foxx = require("org/arangodb/foxx");
var myNewModel = Foxx.extend(
{ schema:{...} },
{
beforeSave: function() {
throw new Error('reached before save');
}
});
并在控制器中使用它,如中所示:
var FoxxRepo = require("org/arangodb/fox
UPDATE语句需要集合名称。在图形中,我希望遍历一条边并更新访问的每个顶点
比如:
对于1..50入站'pmconfig/6376876'pm_内容选项{uniqueVertices:“global”}[更新v.contentsChanged=true]
由于顶点可能位于不同的集合中,是否必须将对象划分为每个集合列表?无法使用动态(运行时)集合名称更新文档。例如,以下AQL查询将不会编译:
FOR v IN 1..50 INBOUND 'pmconfig/6376876' pm_content
在我的NodeJS支持的restapi中,我使用ArangoJS库对集合中的文档调用wait save(…)。注意:我没有使用waitForSync选项
在保存wait之后,我将向客户机发送一个SSE事件,然后客户机立即调用另一个REST API方法,该方法使用AQL查询相同的集合。不幸的是,我得到了以前的(旧的/未更改的)数据。等了一会儿,AQL查询给了我新的数据
waitForSync是解决方案吗?大多数文档都说明此选项等待数据同步到磁盘,但据我所知,ArangoDB将大部分数据保留在内存中
有没有办法通过http从多个顶点执行图形遍历
正如我在文档()中看到的,我可以只指定一个起始顶点
我需要找到两组顶点之间的多条路径,有很多条件,如过滤器、排序等
提前感谢。通过HTTP的图形遍历目前仅支持使用单个起始顶点
在您的用例中,我建议通过AQL执行遍历。对于多个起始顶点,可以在查询周围放置循环:
FOR start_vertex IN start_vertices
FOR v, e, p IN OUTBOUND start_vertex @collection ...
FOR
我正在arangoDB上做一些测试,在使用web UI时,我想测试500000个文档的插入速度
我在web UI中使用了这个查询,代码是
在我的机器上大约需要9秒钟。但是,当我使用Python Arango驱动程序时,每1000次插入大约需要1.9秒
是否有人对python驱动程序足够熟悉,可以详细说明原因?您正在做不同的事情。用户界面中的查询或多或少只向服务器发出一个http请求。在循环中运行insert时,对每个项目都执行http请求。如果您不想使用AQL,那么您仍然可以在一个请求中发送多个
如果在多个选项卡中使用Web UI,是否可能会丢失查询?
我认为这种情况时有发生,但我仍然不能总是重现:
我打开两个选项卡并在这两个选项卡中使用AQL编辑器,创建两个不同的查询并将它们存储在两个*不同的查询名称中。如果用户集合中真的存储了哪一个,这似乎是随机的
有没有一种方法可以并行使用AQL编辑器?是否可以在存储查询名称或类似内容时检查查询名称?我可以确认这种错误行为
我们已调整AQL编辑器,以便在每次需要读/写操作时同步其查询
它已在我们当前的开发分支中修复,并将随即将发布的版本2.4.4一
问题:我有一个开始节点,正在搜索具有特定属性的节点。但我只想要与最短节点相连的节点
示例:绿色节点具有属性集,但我只希望返回“A”和“C”,因为“E”具有更长的路径
到目前为止我得到了什么:
LET source = (FOR x IN Entity FILTER x.objectID == @nodeId
return x)[0]
FOR node, edge, path IN 1..5 ANY source._id GRAPH 'm'
FILTER CONTAINS(node.
我有一个“总统”系列:
{"_key": "1", "name": "George Washington"},
{"_key": "2","name": "John Adams"},
{"_key": "3", "name": "Thomas Jefferson"},
{"_key": "4", "name": "James Madison"}
还有一个边缘系列“总统关系”:
{"_from": "presidents/1", "_to": "presidents/4", "linkType"
在Arangodb3.4的测试版中,当我试图通过arangosh添加视图时,我的数据库崩溃了。因为我无法再启动数据库,所以无法进行备份(数据库转储)
当时我只想安装最新的Arangodb3.4.2.1,但失败了,因为我的CPU太旧了(不支持SSE4.2)。所以我买了一台新电脑,安装了一台新的linux,将数据库复制到/var/lib/arangodb3/databases,开始了Arangodb的新安装,它甚至问我,当前的数据库是否应该升级。我证实了这一点
不幸的是,它没有在那个目录中找到数据库
我是阿兰戈的新手,我正在努力理解写一些查询的“正确”方式。我读了()和(),因为它们总是在搜索我要做的事情时弹出。特别是,我有一个图,其中一个给定节点有一条从该节点到一片叶子的路径(通过某种“类型”的边)。类似于x-a->y-a->z。其中a为边类型,x、y、z为节点。这些路径可以是任意长度。我想编写一个AQL查询,返回从起始节点到叶节点的单个“最长”路径。我发现我总是得到每个子路径,然后必须进行一些后处理。traversal对象似乎为这个问题提供了一个解决方案,但现在它们似乎已被弃用。在AQL
鉴于以下文件结构:
{
"name": [
{
"use": "official",
"family": "Chalmers",
"given": [
"Peter",
"James"
]
},
{
"use": "usual",
"given&qu
如何在开发模式下设置(manifest.json上的设置阶段)新应用程序?(使用--javascript.dev应用程序路径运行arangod)
我想通过这个脚本在开发过程中创建所需的集合
Thanx在开发模式下,安装阶段将在每次请求时自动触发,而不是拆卸。
如果要显式调用它,可以使用arangosh并发出以下命令:
设置:
arangosh> fm.devSetup(<your apps folder name>)
arangosh>fm.devSetup()
拆卸
ar
我只是想确保我得到这个。。。为了获得正确的“耐久性”因素,我所需要做的就是确保在集合上全局提供或设置“等待同步”选项,并且我100%保证写入在磁盘上,数据“立即同步”正确(减去关于向我们提供的O/S的部分)对于每个集合,您可以将“wairForSync”设置为“true”或“false”。如果将其设置为“true”,则保存、更新或删除该集合中文档的调用将等待操作系统报告更改已写入磁盘。正如您所写的,O/S或硬盘可能在撒谎
如果在“save”、“replace”等调用中将“waitForSync”
有没有可能这个查询没有得到很好的优化,有没有人能给我一个如何改进的提示?目前,它持续数小时后我才能杀死它
数字:
小于200万条小记录的收集(需要2 GB RAM)
具有16个索引(需要1.2 GB RAM)
arangosh[SES]>db.AuditsSearch.figures()
查询:
索引:
执行计划:
总结上述讨论的主要要点:
现在,您应该使用db.\u explain()而不是获取原始执行计划。一些有经验的行为在较新的arangodb版本中得到了改进
。优化器现在可以检测到
我想找到没有配置文件的用户集
ArangoDB 2.4.3
LENGTH(users) -> 130k
LENGTH(profiles) -> 110k
users.userId -> unique hash index
profiles.userId -> unique hash index
我制作的这个AQL片段比仲夏穿越大峡谷的蜗牛还要慢
LET usersWithProfiles = ( /* This part is ok */
FOR i IN user
我的foxx应用程序以Parralel(大约5-6个http连接)的形式获取数据。我还有一个简单的url,它只有console.log('I am called')。我有4个内核和16gb内存。我注意到,有时打印以下日志需要1秒到一个多小时
2016-03-12T17:02:53Z [11944] INFO /evm, incoming request from 127.0.0.1: GET http://127.0.0.1:8529/_db/_system/app/analysis/getSt
我有两个收藏:
根-顶点
根边-边
每个root\u-edge连接2个root文档。我希望能够进行查询,以便返回表示数据树的嵌套数据结构
我想要这样的东西:
A: {
id: <int>,
name: <string>
B: {
id: <int>,
name: <string>,
C: {
id: <int>,
我想执行一个路径遍历,在这里我对所有顶点应用一个多条件过滤器
基本上,我希望每个顶点匹配a==true或b==true
使用以下两种方法之一很容易:
FOR v, e, p IN 0..5 OUTBOUND 'objects/key' GRAPH 'stix_graph'
FILTER p.vertices[*].a ALL == true
RETURN p
甚至两个条件都重新结合:
FOR v, e, p IN 0..5 OUTBOUND 'objects/key' GRAP
它需要--server.endpoint选项,但我给它的任何东西都不起作用。有人在Windows上运行过此数据库吗?我已完成以下操作:下载“arango64.msi”并将其安装到Windows 8下的目录“c:\Users\fceller\ArangoDB”中。切换到此目录并执行“shellExample.bat”。这将启动服务器,您可以通过“localhost:8529”下的浏览器访问它
至于server.endpoint选项:它支持tcp或unix域套接字(可能不在Windows下)。对于T
当我使用AQL将文档插入集合时,它返回一个空列表
arangosh [test]> db._query('INSERT @document INTO vertices', {document: {name: "bar"}}).toArray()
[ ]
有没有一种方法可以插入一个文档并在单个AQL查询中返回完整的文档
我希望得到的是:
{
"_id": "vertices/641272433780",
"_key": "641272433780",
"_rev": "6412
我发现以下错误:
[ArangoError 1213:不允许交叉收集请求]错误:不允许交叉收集请求
1213(交叉收集请求)表示您正在对一个集合调用update,但指定来自另一个集合的文档id以进行更新。这是不受支持的
您可以改为通过\u键更新,即
var docs = ///aql
for(var i = 0; i< docs.length;i++) {
db._collection(edgeCol).update(docs[i]._id, {"a": 10});
}
哎呀,我
在ArangoDB 2.7.0版中使用此小数据集:
db._useDatabase("Test");
db._create("authors");
var john = db.authors.save({ name: { first: "John", last: "Doe" }, _key: "doe" })._id;
var frau = db.authors.save({ name: { first: "Maxima", last: "Musterfrau" }, _key: "frau"
我试图理解如何在ArangoDB中相交两个结果,我的场景如下所示
我可以通过以下查询轻松找到居住在西班牙、岛屿或欧洲的用户:
FOR x IN 1..3 INBOUND "places/Europe" situedIn,livesIn
FILTER IS_SAME_COLLECTION('users',x)
return x
我想了解的是扩展搜索功能以包括专业的最佳方式:
例如:
返回西班牙所有警察(返回[A])
返回欧洲所有警察(返回[A])
返回欧洲的所有合法文件(返回[A,B])
我一直在使用arangodb开发一个配置管理系统,该系统收集一些常用软件的配置数据,并将数据流传输到一个程序,该程序将根据一些预定义的规则生成这些软件之间的关系,然后将这些关系保存到arangodb中。建立关系后,我提供API来查询数据。一个重要的查询是生成这些软件的拓扑。我使用图遍历生成具有以下AQL的拓扑:
for n in nginx for v,e,p in 0..4 outbound n forward, dispatch, route,INBOUND deployto, refert
这个AQL返回一个我想使用的对象
const keys = db._query(aql`
FOR huis IN test
FILTER huis._key in ${req.queryParams.keys}
RETURN {
'key': huis._key,
'adres': huis.adres,
'postcode': huis.postcode,
'plaats': huis.plaats
我正在尝试为我的文档创建访问控制列表。每个文档都需要存储哪些组具有CRUD权限,而不是在已创建的文档上创建权限。这些权限可能是分层的,因为文档可能没有明确的权限,而是从拥有该文档的帐户继承这些权限
例如,用户可以有很多食谱。默认情况下,用户只允许他的小组阅读食谱。想想Linux风格的组,每个用户都有自己的组。此默认值是用户配置文件的一部分。现在,对于10个菜谱,用户允许“public”组阅读菜谱。这些是配方文档本身中的明确名称
图在这里合适吗?我应该有一个顶点给用户,一个顶点给配方,它们之间有一
使用Arangodb3.6.x,我有一个场景,连续的文档进入数据库,需要不断地删除旧文档。确定文档以消除这些记录的有效/简单算法是什么。我可以使用文档“\u键”进行选择和删除吗
我想从数据库中检索文档来查看每一个文档都是一种不好的方法,所以我试图找到一种简单、高效的算法。理想情况下,数据库本身将提供这样的机制,如分区。f、 前。关于数据时间戳,它不必非常精确,但它必须有效,因为我必须确保文档总数保持在最大值以下
我特别关注ArangoDB
多谢各位
若昂这取决于您如何限定“旧”文档。如果这些是按
我正在尝试使用对ArangoDB进行基准测试,问题是框架假设图形数据库提供蓝图事务图实现。ArangoDB似乎没有这样的优势
Arango在其Blueprints API中不提供TransactionalGraph功能有什么原因吗?
有人能告诉我Arango Blueprints TransactionalGraph实现的示例吗?目前ArangoDB似乎不支持该接口。您可以从“功能”中看到,supplortstransactions为“false”
我正在使用AQL更新集合中的记录。有时,我会得到[ArangoError 1200:冲突]。
在JS Shell中,我可以将第三个参数设置为true以使用overwrite并忽略冲突。如何忽略AQL中的冲突?虽然我不确定是什么导致了冲突,但通过将指令选项{ignoreErrors:true}附加到查询的更新部分,可以关闭许多查询错误
例如,以下原始查询
FOR doc IN collection
FILTER doc.value == 'someValue'
UPDATE doc W
在node.js上工作时,我有一个名为IoTCollection的集合,其中包含一个文档
{id:1,
传感器:12
}
我需要将返回的数据存储到一个变量中
var my data = db.query('FOR sensor in IoTCollection return sensor.sensorType');
但它返回了一个悬而未决的承诺
我该怎么办
提前谢谢你你的问题是什么
arangojs中的所有异步方法都返回承诺。这些承诺最终将解析为服务器响应(或者在查询的情况下:具有更多异步方法
我相信有一个简单而快速的方法可以做到这一点,但我还是逃避了。我有一个很大的数据集,其中有一些重复的记录,我想消除重复的记录。(副本由一个属性唯一标识,但文档的其余部分也应相同)
我试图创建一个新的集合,它只有几个不同的方法具有唯一的值,但它们都非常缓慢。例如:
FOR doc IN Documents
COLLECT docId = doc.myId, doc2 = doc
INSERT doc2 IN Documents2
或
FOR doc IN Documents
java驱动程序4.1.10我已经创建了一个名为mydatabase1的数据库,我已经使用java创建了一个图形,所以我的问题是如何使用java代码设置边缘标签?如果您是指边缘文档中的“边缘标签”字段,则可以在调用insertEdge时进行设置,如下面的代码所示
ArangoDB arangoDB = new ArangoDB.Builder().build();
// create database
arangoDB.createDatabase("myDatabase");
// cre
我刚刚开始使用arangodb,并解决了我的第一个真正问题:
是否可以搜索连接到所有其他多个节点的节点?这似乎是graph db的基本操作,但我想不出解决方案
作为参考,如果我们以“知道”为例,我想知道哪些人知道Charlie和Dave(应该只有Bob)
(尚不允许嵌入图像)
现在我最好的猜测是开始遍历所有的“目标”,然后自己减少和过滤响应,这真的是唯一的方法吗
编辑:
好的,为了进一步说明我添加了另一个连接,eve也认识dave,但不应该返回,因为她不认识charlie
编辑2:
到目前为止,
我显然遗漏了一些东西,当我运行以下查询时,我得到了40毫秒的响应:
FOR t IN tt
FOR a in aa
FILTER a.from._key == t._key
AND a.value == @v
LIMIT 20 RETURN t
但是,当我添加排序时,查询将一直运行,直到我必须终止它
FOR t IN tt
FOR a in aa
FILTER a.from._key == t._key
AND a.value == @v
SORT t.identifier.value AS
我试图解决一个问题,即在我的图中找到实际的最长最短路径。我正在使用arangosh函数\u diameter,但它只会给出图形直径的数值。我需要知道实际的路径是什么。有可能吗?以下AQL查询返回最长最短路径
LET ids = UNION(
(FOR x IN vertices1 RETURN x),
(FOR x IN vertices2 RETURN x)
)
FOR source IN ids
FOR target IN ids
FILTER source._id < t
以下是我的aql查询,提供了到特定顶点的路径:
FOR v, e, p IN 1..2 OUTBOUND @startVertex GRAPH 'courses'
FILTER v._id == @target
RETURN p.vertices
它会返回这样的结果
[
[
{
"_key": "ADELPHI+UNIVERSITY==BIO+111",
"_id": "courses/ADELPHI+UNIVERSITY==BIO+111"
我已经在Ubuntu 14.04上安装了Arangodb2.2.4,并使用arangodb web界面创建了新的数据库“SampleDB”
然后执行以下命令
foxx管理器--server.database SampleDB更新
foxx管理器--server.database SampleDB安装hello foxx/hello
但命令返回错误“无法写入文件”
我查过日志,但什么也没找到。如果我试图从arangosh安装,也会出现相同的错误。即使使用arangodb 2.2.5,我也可以确认此
在Arango DB中,如何在一个集合中构建文档关系图?文档介绍了如何使用多表集合,但没有介绍如何在一个集合中使用它。如果我理解正确,则要求使用单个顶点集合创建图形
以下示例(ArangoShell代码)使用名为v的单个顶点集合和名为e的边集合创建名为example的图:
var g = require("org/arangodb/general-graph");
g._create("example", [ { collection: "e", "from": [ "v" ], "to" :
给定一个固定的3层深树结构,如
收藏:树
{
"name": "Level 1",
"children": [{
"name": "Level 1.1",
"children": [{
"name": "Level 1.1.1"
}, {
"name": "Level 1.1.2"
}]
}, {
"name": "Level 1.2",
FOXX应用程序能否自动创建索引?我有一个集合(模型),其中需要一个字段作为性能的唯一索引。我可以在事后创建散列,但我只是想确保它在使用模型定义时不可用。如果是,我在哪里可以找到文档
第二个问题是如何在FOXX中创建索引?我知道如何在arangojs中实现,但在FOXX文档中似乎找不到。不要问这个问题。我发现了:db.collection.createIndex()。但是boy就隐藏在文档的“misc”部分中。索引API不是Foxx API的一部分,而是ArangoDB的通用API(Foxx只是
for MacOS声明,自制是首选安装方法,但brew支持可用的DMG软件包。brew版本(包括--HEAD版本)是2.8.7,但我新安装的(brew安装的)系统正在抱怨并要求我升级到2.8.9,作为DMG包提供
我应该停止使用brew而改用DMG版本吗 Brew版本有点落后,因为正在讨论ArangoDB 3.0的功能:
这些将有望在未来几天内关闭并接受,您将很快获得新版本
顺便说一句,在ArangoDB 3.0 RC2最热的时候试用它是一个很好的时间点:
嗨,我有以下收藏和关系
广播(24518文件)
视频组(5699文档)
第集(124893 doc)
视频剪辑(485878文档)
字符(55541文档)
它们的收藏相互关联,如下所示
广播有许多视频组(m:n),所以我创建了broadcastToVideoGroup边缘集合
收集
videoGroup有很多插曲(1:n),所以我创建了VideoGroupToPiSode EdgeCollection
这一集有很多视频剪辑(1:n),所以我创建了episodeToVideoClip Edge
我试图遵循这一点,但我似乎无法让它起作用:
ArangoDB版本3.3.7
我尝试启动3个节点(3个代理)。我正式认为我只能启动2台DBServer,但我听说3台DBServer也可以工作。请使用ArangoDB starter在此处启动ActiveFailover部署
或者集群,您可以在此处使用任意数量的db服务器和协调器:
好的,这并不容易,但下面是命令。请注意,您可能不希望在没有身份验证(可能还有流量加密)的情况下向外界公开数据库
服务器1(172.31.54.123):
服务器2(17
我这里有一个ArangoDB查询,但它在执行时会抛出一个错误。它说语法错误,然后说错误在adminEdge附近的某个地方。\u来自,但我找不到问题所在:
let query = aql`
FOR user IN ${users}
FILTER user._key == ${body.userKey}
FOR adminEdge IN ${administrates}
FILTER adminEdge._from == user._id
LIMIT 1
RETURN { a
我正在为一个项目测试ArangoDB
我已经通过自制软件安装了ArangoDB,我可以毫无问题地运行它,实际上它相当不错
我正试图解决一个关于安全的小问题
当我创建一个新的数据库(我使用的是Web界面)时,会要求我输入数据库名、用户名和密码
我在用户名和密码中输入了什么似乎并不重要,我总是能够在不提示输入密码的情况下登录到它
例如,我用默认用户root和一些随机密码创建了一个数据库,我可以使用arangosh登录fine,不需要任何问题
arangosh --server.database te
1 2 3 4 5 6 ...
下一页 最后一页 共 10 页