指定mongoconn中的导入顺序

2024-09-28 21:47:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为Python mongo-connector项目编写一个DocumentManager。在第一次运行连接器时,我的所有数据都通过bulk_upsert函数从MongoDB导入到图形数据库(Neo4J)。但是,数据本身有一些依赖性,我希望先导入一个集合,然后再导入另一个集合。具体地说,我希望app.songsapp.playlists之前导入,因为后者与前者有图形边。目前mongo-connector正在进行所有导入,没有任何明显的顺序。有什么方法可以指定顺序吗?如果没有,我自己能做些什么来确保秩序


Tags: 数据项目函数数据库app图形connector顺序
1条回答
网友
1楼 · 发布于 2024-09-28 21:47:01

如果将^{} Cypher statement与唯一性约束一起使用,则导入集合的顺序应该无关紧要

例如:

假设您有如下数据:

播放列表集合

{
    "_id': "playlist1",
    "songIds": ["song1, song2, song3"]
}

歌曲集

{
    "_id": "song1",
    "title": "Redemption Song",
    "artist": "Bob Marley"
}

每个播放列表都有一个唯一的_id,每首歌都有一个唯一的_id,这是从playlists文档中引用的

处理这些文档的Cypher语句如下所示:

播放列表:

MERGE (p:Playlist {_id: {_id}})
UNWIND songIds AS songId
MERGE (p)<-[:IN_PLAYLIST]-(s:Song {_id: songId})

对于歌曲:

MERGE (s:Song {_id: {_id}})
SET s.title = {title},
    s.artist = {artist}

MERGE本质上是“获取或创建”。在这里,我们将MERGE与歌曲id一起使用,因此如果一个节点不存在给定的歌曲id,那么它将被创建。如果它已经存在,那么它将被绑定到指定的变量

请确保创建唯一性约束:

CREATE CONSTRAINT ON (p:Playlist) ASSERT i._id IS UNIQUE;
CREATE CONSTRAINT ON (s:Song) ASSERT s._id IS UNIQUE;

相关问题 更多 >