Связь между 2 коллекциями Arangodb

У меня есть 2 коллекции:

  • Пользователь
  • Твитнуть

Я хочу хранить в User список tweet_id и в каждом твите user_id. В моих файлах json Tweets у меня есть твит-автор champ. Я пытаюсь использовать AQL, но мне это не удалось, вы можете мне помочь?

Спасибо

PS: я французский студент, извините за этот ломаный английский


person 4 Matic    schedule 19.06.2018    source источник


Ответы (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 и пытается обновить документы в коллекции User на основе значения атрибута author, которое должно совпадать с ключом документа в User. Он добавляет ключ документа документа Tweet в качестве нового атрибута в документ пользователя.

Если вы не сделали идентификатор пользователя и идентификатор твита ключами документов соответствующих коллекций, вам придется использовать другой запрос. Предположим, документы пользователя, такие как:

{
  "_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_id в соответствующем документе Tweet.

person CodeManX    schedule 19.06.2018
comment
отлично Спасибо за помощь - person 4 Matic; 19.06.2018