ArangoDB - 虽然创建了集合但找不到集合错误
ArangoDB - Collection not found error though the collection is created
我正在两个文档之间创建边 "has_taken",如下所示:
sin_graph.createEdge("has_taken", userDoc._id, tripDoc._id, edgeAttributes={})
我收到以下错误:
File "/Library/Python/2.7/site-packages/pyArango/graph.py", line 135, in createEdge
raise CreationError("Unable to create edge, %s" % r.json()["errorMessage"], data)
CreationError: Unable to create edge, collection not found. Errors: {u'code': 404, u'errorNum': 1203, u'errorMessage': u'collection not found', u'error': True}
名称为 "has_taken" 的集合存在,但出现上述错误。
我已将 social graph example 示例转译为 pyArango;它说明了使用它维护图形数据时要做的事情的顺序:
#!/usr/bin/python
import sys
from pyArango.connection import *
from pyArango.graph import *
from pyArango.collection import *
class Social(object):
class male(Collection) :
_fields = {
"name" : Field()
}
class female(Collection) :
_fields = {
"name" : Field()
}
class relation(Edges) :
_fields = {
"number" : Field()
}
class social(Graph) :
_edgeDefinitions = (EdgeDefinition ('relation',
fromCollections = ["female", "male"],
toCollections = ["female", "male"]),)
_orphanedCollections = []
def __init__(self):
self.conn = Connection(username="root", password="")
self.db = self.conn["_system"]
if self.db.hasGraph('social'):
raise Exception("The social graph was already provisioned! remove it first")
self.female = self.db.createCollection("female")
self.male = self.db.createCollection("male")
self.relation = self.db.createCollection("relation")
g = self.db.createGraph("social")
a = g.createVertex('female', {"name": 'Alice', "_key": 'alice'});
b = g.createVertex('male', {"name": 'Bob', "_key": 'bob'});
c = g.createVertex('male', {"name": 'Charly', "_key": 'charly'});
d = g.createVertex('female', {"name": 'Diana', "_key": 'diana'});
a.save()
b.save()
c.save()
d.save()
g.link('relation', a, b, {"type": 'married', "_key": 'aliceAndBob'})
g.link('relation', a, c, {"type": 'friend', "_key": 'aliceAndCharly'})
g.link('relation', c, d, {"type": 'married', "_key": 'charlyAndDiana'})
g.link('relation', b, d, {"type": 'friend', "_key": 'bobAndDiana'})
Social()
我想可能是因为你做了一个Collection类型的collection而不是Edge类型的(哈哈,迷惑,我知道。)
但是在制作名为 "has_taken" 的集合时,而不是
db.createCollection(className="Collection", name="has_taken")
尝试
db.createCollection(className="Edges", name="has_taken")
我在阅读 this 页面时注意到了这一点。 (单击 link 时请查看屏幕顶部。函数及其描述就在上面,其中提到了这种差异。)
createCollection(className='Collection', waitForSync=False, **colArgs)[source]
Creates a collection and returns it. ClassName the name of a class inheriting from Collection or Egdes, it can also be set to ‘Collection’ or ‘Edges’ in order to create untyped collections of documents or edges.
我正在两个文档之间创建边 "has_taken",如下所示:
sin_graph.createEdge("has_taken", userDoc._id, tripDoc._id, edgeAttributes={})
我收到以下错误:
File "/Library/Python/2.7/site-packages/pyArango/graph.py", line 135, in createEdge
raise CreationError("Unable to create edge, %s" % r.json()["errorMessage"], data)
CreationError: Unable to create edge, collection not found. Errors: {u'code': 404, u'errorNum': 1203, u'errorMessage': u'collection not found', u'error': True}
名称为 "has_taken" 的集合存在,但出现上述错误。
我已将 social graph example 示例转译为 pyArango;它说明了使用它维护图形数据时要做的事情的顺序:
#!/usr/bin/python
import sys
from pyArango.connection import *
from pyArango.graph import *
from pyArango.collection import *
class Social(object):
class male(Collection) :
_fields = {
"name" : Field()
}
class female(Collection) :
_fields = {
"name" : Field()
}
class relation(Edges) :
_fields = {
"number" : Field()
}
class social(Graph) :
_edgeDefinitions = (EdgeDefinition ('relation',
fromCollections = ["female", "male"],
toCollections = ["female", "male"]),)
_orphanedCollections = []
def __init__(self):
self.conn = Connection(username="root", password="")
self.db = self.conn["_system"]
if self.db.hasGraph('social'):
raise Exception("The social graph was already provisioned! remove it first")
self.female = self.db.createCollection("female")
self.male = self.db.createCollection("male")
self.relation = self.db.createCollection("relation")
g = self.db.createGraph("social")
a = g.createVertex('female', {"name": 'Alice', "_key": 'alice'});
b = g.createVertex('male', {"name": 'Bob', "_key": 'bob'});
c = g.createVertex('male', {"name": 'Charly', "_key": 'charly'});
d = g.createVertex('female', {"name": 'Diana', "_key": 'diana'});
a.save()
b.save()
c.save()
d.save()
g.link('relation', a, b, {"type": 'married', "_key": 'aliceAndBob'})
g.link('relation', a, c, {"type": 'friend', "_key": 'aliceAndCharly'})
g.link('relation', c, d, {"type": 'married', "_key": 'charlyAndDiana'})
g.link('relation', b, d, {"type": 'friend', "_key": 'bobAndDiana'})
Social()
我想可能是因为你做了一个Collection类型的collection而不是Edge类型的(哈哈,迷惑,我知道。)
但是在制作名为 "has_taken" 的集合时,而不是
db.createCollection(className="Collection", name="has_taken")
尝试
db.createCollection(className="Edges", name="has_taken")
我在阅读 this 页面时注意到了这一点。 (单击 link 时请查看屏幕顶部。函数及其描述就在上面,其中提到了这种差异。)
createCollection(className='Collection', waitForSync=False, **colArgs)[source]
Creates a collection and returns it. ClassName the name of a class inheriting from Collection or Egdes, it can also be set to ‘Collection’ or ‘Edges’ in order to create untyped collections of documents or edges.