sách gpt4 ai đã đi

Tạo Node và mối quan hệ nếu Node kết thúc tồn tại (nếu không chỉ tạo Node đầu tiên)

In lại 作者:太空宇宙 更新时间:2023-11-04 00:27:50 30 4
mua khóa gpt4 Nike

我有一个应用程序,它通过消息队列将数据库写入命令分派(dispatch)给工作人员(数量非常大),因此无法保证它们的接收顺序。

我有两个 Node ,例如“Account”和“Media”。在此假设的应用程序中,用户可以匿名上传媒体,系统会自动为他们创建一个帐户,然后他们可以稍后关联该帐户。

将收到两条消息,一条用于帐户,一条用于媒体(几乎肯定是由不同的工作人员接收)。他们谁也不知道对方是否已经写好。我需要编写一个将在每个工作人员上运行的查询,其中:

  • 创建新帐户/媒体
  • 如果另一个 Node 存在,则在两者之间创建 POSTED_BY 关系
  • 如果其他 Node 不存在,则只创建当前 Node
  • 返回新创建的 Node

因此,无论每条消息接收的顺序如何,第一个查询将创建 Node A,第二个查询将创建 Node B + 关系。

如果我在同一个查询中创建它们,那就很简单:

CREATE (m:Media { url: 'xyz.jpg' })-[:POSTED_BY]->(u:Account { username: 'johndoe' })
RETURN m,u

我查看了CREATE UNIQUEMERGE,但是两者似乎都会在 Node 不存在时创建该 Node ,而不是什么都不做。

1 Câu trả lời

我认为您想使用MERGE 来执行此操作。从本质上讲,您可以创建两个 Node 和关系,然后使用其他属性更新特定 Node ,而不是一次创建一个 Node 。

考虑消息一是媒体消息

MERGE (m:Media { url: 'xyz.jpg' })
SET m =+ {media_props}
MERGE (u:Account { username: 'johndoe' })
MERGE (m)-[:POSTED_BY]->(u)
RETURN m

考虑消息二是新用户帐户消息

MERGE (u:Account { username: 'johndoe' })
SET u =+ {user_props}
MERGE (m:Media { url: 'xyz.jpg' })
MERGE (m)-[:POSTED_BY]->(u)
RETURN u

您可以想象通过 MERGE 单独创建每个 Node ,并为该关系提供第三条消息。该模式将是相同的,但不会在任一 Node 上设置任何附加属性。

例如...

// message 1
// create the media node
MERGE (m:Media { url: 'xyz.jpg' })
SET m =+ {media_props}
RETURN m


// message 2
// create the user/account node
MERGE (u:Account { username: 'johndoe' })
SET u =+ {user_props}

// message 3
// create the relationship
MERGE (u:Account { username: 'johndoe' })
MERGE (m:Media { url: 'xyz.jpg' })
MERGE (m)-[r:POSTED_BY]->(u)
RETURN m,r,u

请注意,所有解决方案都假设合并语句中用于识别媒体和帐户的 key 是唯一的。

关于node.js - 如果结束 Node 存在则创建 Node 和关系(否则仅创建第一个 Node ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119628/

30 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com