2个集合Arangodb之间的关系

Relationship between 2 collections Arangodb

我有 2 个合集:

我想在用户中存储 tweet_id 的列表,并在每条推文中存储 user_id。在我的 json 推文文件中,推文作者 champ.I 尝试使用 AQL 但我没有成功,你能帮我吗?

谢谢

ps: 我是法国学生,很抱歉英语这么烂

如果您有像这样的用户文档:

{
  "_key": "1234",
  "name": "John"
}

和 Tweet 文档,例如:

{
  "_key": "56789",
  "message": "Lorem ipsum sit dolor amet",
  "author": "1234"
}

那么您可以使用以下 AQL 查询:

FOR tweet IN Tweet
  UPDATE tweet.author WITH { tweet_key: tweet._key } IN User
  RETURN NEW

它遍历 Tweet 集合中的所有文档,并尝试根据属性值 author 更新 User 集合中的文档,该属性值必须与 User 中的文档键相同。它将 Tweet 文档的文档密钥作为新属性添加到用户文档。

如果您没有将用户 ID 和推文 ID 作为相应集合的文档键,则必须使用不同的查询。假设用户文档如下:

{
  "_key": "376472856",
  "user_id": 1234,
  "name": "John"
}

和 Tweet 文档,例如:

{
  "_key": "8975438957",
  "tweet_id": 56789,
  "message": "Lorem ipsum sit dolor amet",
  "author": 1234
}

然后您应该在用户集合中的字段 user_id 和 运行 上创建一个散列索引(可能是唯一的)以下查询:

FOR tweet IN Tweet
  FOR user IN User
    FILTER user.user_id == tweet.author
    LIMIT 1
    UPDATE user WITH { tweet_id: tweet.tweet_id } IN User
    RETURN NEW

它将使用 tweet_id 等于相应推文文档中的 tweet_id 属性的属性来扩充用户文档。