Как отфильтровать узлы неомодели по их атрибутам после обхода? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть следующие модели neo4j с отношением Документ и Текст, где несколько документов связаны с документом:

class Document(StructuredNode):
    """Document Neo4J model for documents"""
    document_id = IntegerProperty(required = True)


class Text(StructuredNode):
    """Text model for managing texts"""

    # Inherent text properties
    text_id = IntegerProperty(required = True)
    text = StringProperty(required = True)

    document = RelationshipTo('Document', "PARENT")

Для того, чтобы получить ВСЕ объекты Text, связанные с указанным документом c Я использую обход следующим образом:

def get_all_texts_by_document_id(document_id):
    document = Document.nodes.get_or_none(document_id = document_id)
    definition = dict(node_class = Text, direction = EITHER, relation_type = "PARENT", model = None)
    document_to_text_traversal = Traversal(document, Text.__label__, definition)
    texts = document_to_text_traversal.all()
    print(f"Returning {len(texts)} texts for document_id {document_id}")
    return texts

Я хочу получить текст с указанным c текстовым идентификатором, и в настоящее время я выполняю итерацию с условием if в списке всех текстов, полученных с использованием вышеуказанного function.

Существует ли встроенный метод / лучший способ фильтрации на основе text_id после завершения обхода?

...