【问题标题】:Relationship between 2 collections Arangodb2 个集合之间的关系 Arangodb
【发布时间】:2018-06-19 15:20:32
【问题描述】:

我有 2 个收藏:

  • 用户
  • 推特

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

谢谢

ps:我是法国学生,很抱歉这个破英语

【问题讨论】:

    标签: python nosql arangodb aql pyarango


    【解决方案1】:

    如果您有以下用户文档:

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

    并在推特上发布文件,例如:

    {
      "_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"
    }
    

    并在推特上发布文件,例如:

    {
      "_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 文档中的 tweet_id 属性。

    【讨论】:

    • 完美感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2019-12-17
    相关资源
    最近更新 更多