Nano Hash - криптовалюты, майнинг, программирование

Как получить все подключенные узлы в neo4j

введите описание изображения здесь

Я хочу получить список всех подключенных узлов, начиная с узла 0, как показано на диаграмме.


  • Можно немного точнее? какой результат вы хотите получить? 11.07.2017
  • Я хочу получить список всех подключенных узлов. Например, в приведенном выше случае, когда я ищу подключенные узлы для 0, он должен возвращать узлы-1,2,3. 11.07.2017

Ответы:


1

На основании вашего комментария:

Я хочу получить список всех подключенных узлов. Например, в приведенном выше случае, когда я ищу подключенные узлы для 0, он должен возвращать узлы-1,2,3.

Этот запрос сделает то, что вы хотите:

MATCH ({id : 0})-[*]-(connected)
RETURN connected

Приведенный выше запрос вернет все узлы, связанные с узлом с id=0 (я считаю, что числа внутри узлов являются значениями свойства id) на любой глубине, в обоих направлениях и с учетом любого типа отношений. Взгляните на раздел Отношения в деталях документов.

Хотя это будет хорошо работать для небольших графиков, обратите внимание, что это очень дорогая операция. Он будет проходить по всему графу начиная с начальной точки ({id : 0}) с учетом любого типа отношений. Это действительно не очень хорошая идея для производственных сред.

11.07.2017
  • в случае циклического графа он дает повторяющиеся узлы 11.07.2017
  • @chetandev Попробуйте: MATCH (root {id : 0})-[*]-(connected) WHERE root <> connected RETURN distinct connected 11.07.2017

  • 2

    Если вы хотите сопоставить узлы, имеющие отношение к другому узлу, вы можете использовать это:

    MATCH (n) MATCH (n)-[r]-() RETURN n,r
    

    Он вернет вам все узлы, имеющие отношение к другому узлу или узлам, независимо от направления отношения.

    Если вы хотите добавить ограничение, вы можете сделать это следующим образом:

    MATCH (n:Label {id:"id"}) MATCH (n)-[r]-() RETURN n,r
    
    11.07.2017
  • Могу ли я что-то сделать, чтобы получить глубокие узлы, то есть не только те, которые напрямую связаны с n 27.03.2020
  • MATCH (n:Label {id:id}) MATCH(q:Deep_Node {id:id}) MATCH (n)-[r]-(q) RETURN n,r,q 30.03.2020

  • 3

    Для более крупных или сильно взаимосвязанных графов APOC-процедуры предлагают более эффективные средства. обхода, который возвращает все узлы в подграфе.

    Как уже упоминалось, лучше всего использовать метки на ваших узлах и добавить либо индекс, либо уникальное ограничение свойства label+ для быстрого поиска вашего начального узла.

    Используя метку «Label» и параметр idParam, запрос для получения узлов подграфа с APOC будет выглядеть так:

    MATCH (n:Label {id:$idParam})
    CALL apoc.path.subgraphNodes(n, {minLevel:1}) YIELD node
    RETURN node
    

    Узлы будут разными, и начальный узел не будет возвращен вместе с остальными.

    РЕДАКТИРОВАТЬ

    В настоящее время существует ограничение, запрещающее использование minLevel в subgraphNodes(), вы можете либо самостоятельно отфильтровать начальный узел, либо использовать apoc.path.expandConfig(), используя uniqueness:'NODE_GLOBAL', чтобы получить тот же эффект.

    11.07.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..