Neo4j не поддерживает словари, и он поддерживает только списки, содержащие примитивные типы, такие как строка, int, bool и т. д. (смешанные типы в списке не допускаются).
Вот типы недвижимости Neo4j поддерживает:
http://docs.neo4j.org/chunked/preview/graphdb-neo4j-properties.html
Чтобы сохранить словарь в Neo4j, вы можете сохранить его в виде строки JSON.
Луковицы имеет тип Document
Property
, который делает dict
< - преобразование>json
для вас.
См ...
Если вы работаете с общим Vertex
или Edge
, что вам нужно сделать это преобразование вручную, прежде чем сохранить его :
type_system = g.client.type_system
fields = type_system.database.to_document({'name': 'testNode'})
g.mynode.create(title='Mi Node', fields=fields)
Однако, если вы используете Model
, лампочки будут выполнять преобразование для вас. Просто определите модель, используя 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/
Вы, вероятно, не может задайте свойство Map на узле. Попробуйте разбить его на строку JSON? –