2016-05-23 5 views
4

Gibt es eine Möglichkeit, eine Sammlung als eine Eigenschaft in Neo4j aufzunehmen? Und wenn ja, wäre das ein Schema, das mit der Grundphilosophie von Neo4j übereinstimmt?Kann eine Sammlung eine Eigenschaft in Neo4j sein?

Der Grund, warum ich an einem solchen Knoten interessiert bin, ist, dass ich die Idee einer Abfolge von Aktionen kodieren kann. In diesem Fall passierte Frühstück, Mittagessen und Abendessen. Ich will sicher nicht 3 separate Knoten für jede Mahlzeit. Es macht auch keinen Sinn, 3 Beziehungen zu haben, die Mahlzeiten sind, weil sie sich mit niemandem verbinden werden.

Ich versuche, so etwas zu entwickeln:

CREATE (:Node {name: 'John Doe', food: [{breakfast: ['cereal', 'juice']}, {lunch: ['sandwich', 'milk']}, {dinner: ['M&Ms']}])

Alle meine Versuche, etwas dieser Art haben auf diese Fehler führte:

Property values can only be of primitive types or arrays thereof
oder
Collections containing mixed types can not be stored in properties.

Dies führte mich zu der Annahme, dass diese Art von Struktur nicht ein ist gute Idee, und ich nehme an, dass es einen guten Grund gibt, warum.

Antwort

4

Warum wollen Sie nicht getrennte Knoten für die Mahlzeiten?

Eigenschaften können Arrays von Werten sein.

könnten Sie haben nur drei zusätzliche Eigenschaften auf Ihrem Knoten (die als Karte fungiert):

CREATE (:Person {name: 'John Doe', 
      breakfast: ['cereal', 'juice'], 
      lunch: ['sandwich', 'milk'], 
      dinner: ['M&Ms']}) 

Sie auch food.* als Eigentum-Namen verwenden können.

+0

ich das tun will und ich denke, es great..but ich, warum die andere Art und Weise isn auch ich frage ist‘ t empfohlen? Im Allgemeinen ist eines der nützlichen Dinge über Schlüsselpaarwerte ihre Verschachtelungsfähigkeiten, nein? –

0
  1. Nein, verschachtelte Sammlungen als Eigenschaften können nicht verwendet werden.

  2. Die Philosophie ist einfach: maximale Zerlegung von Objekten und Beziehungen, um Graphalgorithmen effektiv als Werkzeug der Analyse zu verwenden. Verwenden Sie Ihr Beispiel mit Essen:

    • Wer isst die gleichen Lebensmittel zum Frühstück?
    • Wer war das Mittagessen zur gleichen Zeit?
    • Was ist, wenn Sie Kalorie essen müssen?
    • Wie unterschiedliche Kochmethoden der gleichen Person an verschiedenen Tagen?
    • Wer liefert diese Produkte?
    • In einigen Rezepten enthalten diese Produkte?
    • Was sind die Gemüse und Fruchtsäfte, die Menschen am Tag zum Frühstück waren?

Und als Darstellung eines exemplarischen Modell:

enter image description here