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

這是新節點邀請節點我可以看到它在圖形數據庫。 - 如果我在裏面加入一些新的領域,現有的節點也不會在圖形數據庫 反映 - 如果我創建一個新的節點,我可以看到它在圖形數據庫的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如果我在軌道純粹做的情況下得到的答案它將包裝 –

+0

是的,問題是一樣的,neo4j不處理遷移,你不需要在所有節點上添加一些東西。我沒有閱讀'property'方法代碼,但我確信它會做這樣的事情:'value.present?值:default_value' – tebayoso

回答

1

簡短的回答將是沒有確切的問題:有沒有辦法搜索在持久節點未申報的屬性值。

編輯:

他們還說像行爲移民可能適合當前需求的寶石。

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

發現答案:

節點應被視爲存儲在他們裏面的屬性文件。我們在這裏處理的是Cypher查詢和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 Web UI,然後我看不到節點中的新字段,我看到是否創建了全新的對象 –

相關問題