Как присоединиться к MongoDB с помощью DBRef - PullRequest
6 голосов
/ 19 февраля 2020

У меня есть два документа с DBRef-связью между этими документами.

{
  "_id": 77,
  "title": "Test title",
  "status": "in-progress",
  "reporter": {
    "$ref": "User",
    "$id": ObjectId("5daf022549a36e319879f357"),
    "$db": "test"
  },
  "priority": "high",
  "project": {
    "$ref": "Project",
    "$id": 30,
    "$db": "gsc"
  }
}

Пользовательский документ:

{
  "_id": ObjectId("5daf022549a36e319879f357"),
  "username": "user1",
  "email": "test@gmail.com",
  "is_active": true,
  "firstName": "user-1"
}

Я пробовал запрос ниже, но не получил должного результата

db.Task.findOne($lookup:
  {
    from: User,
    localField: reporter,
    foreignField: reporter._id,
    as: User_Task
  }
)

Как выполнить JOIN? Кроме того, хотите, чтобы оба документа документировали? Я хочу получить данные из документа задач и предложить способ соединения с полем проекта.

Нужен такой результат:

{
"_id" : 77,
"title" : "Test title",
"status" : "in-progress"
"reporter" : 
{
    "_id" : ObjectId("5daf022549a36e319879f357"),
    "username" : "user1",
    "email" : "test@gmail.com"
    "is_active" : true,
    "firstName" : "user-1"
},
"priority" : "high",
"project" : {}
...