Neo4j 不支持字典,它只支持包含原始类型的列表,例如 string、int、bool 等(不允许在列表中混合类型)。
以下是 Neo4j 支持的属性类型:
http://docs.neo4j.org/chunked/preview/graphdb-neo4j-properties.html
要在 Neo4j 中存储字典,可以将其保存为 JSON 字符串。
Bulbs 有一种Document
Property
类型可以为您进行dict
<->json
转换。
看...
如果您使用泛型Vertex
or Edge
,则需要在保存之前手动进行此转换:
type_system = g.client.type_system
fields = type_system.database.to_document({'name': 'testNode'})
g.mynode.create(title='Mi Node', fields=fields)
但是,如果您使用Model
, Bulbs 将为您进行转换。只需使用Document
属性而不是定义您的模型Dictionary
:
# people.py
from bulbs.model import Node, Relationship
from bulbs.property import String, DateTime, Document
from bulbs.utils import current_datetime
class Person(Node):
element_type = "person"
name = String(nullable=False)
fields = Document()
class Knows(Relationship):
label = "knows"
timestamp = DateTime(default=current_datetime, nullable=False)
...然后您可以像这样使用您的模型...
>>> from people import Person, Knows
>>> from bulbs.neo4jserver import Graph
>>> g = Graph()
>>> g.add_proxy("people", Person)
>>> g.add_proxy("knows", Knows)
>>> james = g.people.create(name="James", fields={'name': 'testNode1'})
>>> julie = g.people.create(name="Julie", fields={'name': 'testNode2'})
>>> knows = g.knows.create(james, julie)
请参阅http://bulbflow.com/docs/api/bulbs/model/