2个收藏夹之间的关系Arangodb

时间:2018-06-19 15:20:33

标签: python nosql arangodb aql pyarango

我有2个收藏集:

  • 用户
  • 推特

我要在用户中存储tweet_id的列表,并在每条推文中存储user_id。在我的json Tweets文件中,我有tweet作者champ。我尝试使用AQL,但未成功,您能帮我吗?

谢谢

ps:我很抱歉这个法语英语

1 个答案:

答案 0 :(得分:1)

如果您有用户文档,例如:

{
  "_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文档的文档密钥作为新属性添加到User文档。

如果您没有将用户ID和Tweet ID设置为相应集合的文档密钥,则必须使用其他查询。假设用户文档如下:

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

还有Tweet文档,例如:

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

然后,您应该在user_id字段的User collection中创建一个哈希索引(可能是唯一的)并运行以下查询:

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文档中的tweet_id属性相等的tweet_id属性来扩展用户文档。