Джанго с несколькими базами данных Mongodb и Neo4j - PullRequest
0 голосов
/ 19 октября 2018

Я использую Mongo в качестве своей основной базы данных и Neo4j для хранения некоторых отношений. Надеюсь, Neo4j может сократить время запроса для сложных запросов в моем приложении. Я не совсем понимаю, какподдерживать отношения между ними.

Вот мой вопрос как мы можем создать отношения между таблицами из двух разных баз данных в этом случае?

Я работаю над Python3.6, Django2.1 , django-neomodel 0.0.4 и Djongo 1.2.30

Вот мой пример models.py:

class Listing(models.Model):
''' Listing Model for mongo database '''
create_time = models.DateTimeField()
category = models.EmbeddedModelField(
    model_container=Category,
)
subcategory = models.EmbeddedModelField(
    model_container=Subcategory,
    model_form_class=SubcategoryForm
)
...


class Listingnode(DjangoNode):
    uid = UniqueIdProperty()
    list_id = StringProperty()
    status = StringProperty()
    created = DateTimeProperty(default=datetime.utcnow)
    price_range = RelationshipTo('PricerangeNodes','PRICE_RANGE')
    tags = RelationshipTo('TagNodes','TAGS')

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете добавить автоматически сгенерированное свойство id к сущности MongoDB, а также к сущности Neo4j, сохранить id в объекте, который будет связан, соответственно, с другой сущностью и загрузить объект через библиотеку отображения графов объектов (neo4j).-огм) сохраненным id при необходимости.

1.Часть MongoDB (версия Java)

1.1 YourMongoEntity

@Document
public class YourMongoEntity {
  @Id
  private String id;

  @Indexed(unique = true)
  private String furtherIdentifier;

  // For reasons of clarity the default constructor, getter and setter are omitted.  
}

1.2 YourMongoEntityDAO

@Repository
public interface YourMongoEntityDAO extends MongoRepository<YourMongoEntity, String> {
  YourMongoEntity findById(String id);
}

2.Часть Neo4j (версия Java)

2.1 YourNeo4jEntity

@NodeEntity
public class YourNeo4jEntity  {
  @Id
  @GeneratedValue
  private Long id;

  @Index(unique = true)
  private Long furtherIdentifier;

  // For reasons of clarity the default constructor, getter and setter are omitted.  
}

2.2 YourNeo4jEntityDAO

@Repository
public interface YourNeo4jEntityDAO extends Neo4jRepository<YourNeo4jEntity, Long> {
  YourNeo4jEntity findId(Long id);
}
...