2016-11-25 3 views
0
class Invitation 
    include Neo4j::ActiveNode 
    property :email 
end 

Это узел узла узла Neo Я вижу его в базе данных графа. - Если бы я добавить новое поле в нем, для существующих узлов она не отразит в базе данных графа - Если я создаю новый узел, я могу видеть его в базе данных графаRails Neo4j Как добавить новое поле в существующую базу данных

Так что вопрос, если я должен добавить одно поле предположим

property :valid, type: Boolean, default: true

Как я могу добавить это так, что я могу видеть его в существующих узлов в базе данных графа ???, так же, как и мы в активной записи миграций

я добавил поле Узел

property :vish, type: Boolean, default: true

Так что, когда запрос

Invitation.where(vish: true).count ==> Результат 0

Если добавить новый узел Invitation.create (адрес электронной почты: '[email protected]')

Затем запустите запрос

Invitation.where(vish: true).count ==> результат 1

Это точный вопрос я получаю

+0

Я думаю, что это дублируется ... http://stackoverflow.com/questions/35255540/neo4j-add-update-properties-if-node-exists – tebayoso

+0

@JorgedelosSantos, если я получу ответ в контексте рельсов, это wil wrapper –

+0

Да, проблема такая же, neo4j не обрабатывает миграции, вам не нужно добавлять что-то по всем узлам. Я не читал код 'property'method, но я уверен, что он сделает что-то вроде:' value.present? value: default_value' – tebayoso

ответ

1

Короткий ответ будет Нет: нет никакого способа Поиска для необъявленных значений свойств в сохранялось узлов.

Отредактировано:

Они добавили миграции, как поведение для драгоценных камней, которые могли бы соответствовать вашим текущим потребностям.

http://neo4jrb.readthedocs.io/en/latest/Migrations.html

Discovery Ответ:

Узлы должны рассматриваться как документы, которые хранит свойства внутри них. Здесь мы имеем дело с реализацией Cypher Query и Neo4j::ActiveNode, который не только игнорирует значения по умолчанию для свойств.

Это можно легко проверить:

class User 
    include Neo4j::ActiveNode 

    property :name, type: String 
    property :email, type: String, default: '[email protected]' 
end 

Затем создайте два узла:

User.create(name: 'John', email: '[email protected]' 
User.create(name: 'John') 

Мы пытаемся искать необъявленной собственности значения:

> User.where(title: 'Mr') 
=> #<QueryProxy CYPHER: "MATCH (result_user:`User`) WHERE (result_user.title = {result_user_title})"> 

Мы эффективно называем Cyper и получить результаты, это меня что декларация свойства в модели вообще не используется в Neo4j::ActiveNode#where

Это означает, что она используется только для установки и получения свойств, но игнорируется искателями.

Там может быть обходными, что фактически отсутствуют реализации в жемчужине Neo4j:

Вы можете осуществлять поиск по массиву значений в разъеме Cyper, но не разбор правильно значений:

User.where(another_field: nil).count 
CYPHER 39ms MATCH (result_user:`User`) WHERE (result_user.another_field IS NULL) RETURN count(result_user) AS result_user 
=> 100 
User.where(another_field: ['Something', nil]).count 
CYPHER 12ms MATCH (result_user:`User`) WHERE (result_user.another_field IN {result_user_another_field}) RETURN count(result_user) AS result_user | {:result_user_another_field=>["Something", nil]} 
=> 0 

Как вы можете видеть в последнем запросе, nil передается буквально. Поэтому вы не можете этого сделать.

Я открыл в вашем репозитории Issue и связал этот вопрос, чтобы получить решение.

+0

, что об этом https://github.com/neo4jrb/neo4j/wiki/Neo4j -v3-Migrations –

+0

Как указано в моем ответе, вам просто нужно объявить свойства в модели, вам не нужны миграции для добавления свойств к узлам: http://neo4jrb.readthedocs.io/en/7.2.x/ Properties.html # undeclared-properties – tebayoso

+0

Да, я сделал то же самое, но запрос не соответствует действительности, поскольку предыдущие записи не поднимают значение по умолчанию: true .............. Я добавил ситуацию в вопрос, Даже если я открою пользовательский интерфейс neo4j, тогда я не могу увидеть новое поле в узле, я вижу, создан ли новый новый объект. –

Смежные вопросы