<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Neo4j入門(五)刪除節(jié)點的正確姿勢

          共 1598字,需瀏覽 4分鐘

           ·

          2021-11-29 02:00

          ??本文還是照例講講自己工作中遇到的坑。本文將會講述如何在Neo4j中正確地刪除節(jié)點。
          ??圖數(shù)據(jù)庫在刪除節(jié)點的時候,并不像刪除屬性和刪除關(guān)系那樣方便,原因就在于刪除節(jié)點時,可能有關(guān)系與之相連,因此需要考慮這個問題。Neo4j在刪除節(jié)點時,已經(jīng)考慮了這個問題,那么,我們該如何正確地在Neo4j中刪除節(jié)點呢?
          ??本文將會介紹如何使用Neo4j原生Cypher語句及py2neo模塊進(jìn)行節(jié)點刪除。
          ??首先,我們有如下的3個節(jié)點及邊,如下圖:

          圖譜示例

          原生Cypher語句

          1. 只刪除節(jié)點

          MATCH?(n:Test{name:?'test1'})?DELETE?(n)

          運(yùn)行上述語句會報錯:Cannot delete node<10000>, because it still has relationships. To delete this node, you must first delete its relationships.,該語句只刪除name為test1的節(jié)點,但該節(jié)點因為有關(guān)系與之相連,故刪除節(jié)點報錯。

          1. 刪除節(jié)點及其子圖

          MATCH?(n:Test{name:?'test1'})?DETACH?DELETE?(n)

          運(yùn)行上述語句,執(zhí)行成功,會刪除name為test1的節(jié)點及其子圖,也就是該節(jié)點與其他節(jié)點相連的邊也會刪除,如下圖:

          刪除節(jié)點及其子圖
          1. 刪除全部節(jié)點

          MATCH?(n)?DETACH?DELETE?(n)

          該語句會刪除整個圖譜,即所有的節(jié)點和關(guān)系,應(yīng)當(dāng)慎用,另外,當(dāng)圖譜規(guī)模很大時,運(yùn)行該語句容易報錯(OOM,Out Of Memeory)。

          py2neo

          ??py2neo是Python操作Neo4j的第三方模塊。

          1. 只刪除節(jié)點

          ??py2neo沒有相應(yīng)的函數(shù)來實現(xiàn)只刪除節(jié)點的操作,可以借助graph.run()函數(shù)調(diào)用原生Cypher語句實現(xiàn),示例代碼如下:

          #?-*-?coding:?utf-8?-*-
          from?py2neo?import?Graph

          #?連接Neo4j
          url?=?"http://localhost:7474"
          username?=?"neo4j"
          password?=?"***"
          graph?=?Graph(url,?auth=(username,?password))
          print("neo4j?info:?{}".format(str(graph)))

          #?只刪除節(jié)點
          graph.run("MATCH?(n:Test{name:?'test1'})?DELETE?(n)")


          1. 刪除節(jié)點及其子圖

          ??py2neo的graph中的delete()函數(shù)會刪除節(jié)點及其子圖,示例代碼如下:

          #?-*-?coding:?utf-8?-*-
          from?py2neo?import?Graph
          from?py2neo?import?NodeMatcher

          #?連接Neo4j
          url?=?"http://localhost:7474"
          username?=?"neo4j"
          password?=?"***"
          graph?=?Graph(url,?auth=(username,?password))
          print("neo4j?info:?{}".format(str(graph)))

          #?刪除節(jié)點及其子圖
          node?=?NodeMatcher(graph=graph).match("Test",?name='test1').first()
          result?=?graph.delete(node)

          總結(jié)

          ??本文到此結(jié)束,感謝閱讀,后續(xù)將會介紹更多關(guān)于知識圖譜相關(guān)的內(nèi)容,敬請關(guān)注~


          瀏覽 341
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区三区色欲 | 99福利视频 | 加勒比无码久久综合 | 国产精品啪啪啪 | 欧美成人高清无码 |