Mongodb Multiple $ lookup и $ unwind в одном конвейере агрегации - PullRequest
0 голосов
/ 29 мая 2019

Hy У меня есть две коллекции БД mongo, одна для хранения сообщений, а другая, содержащая данные пользователя,

вот коллекция моих пользователей >>

{
  _id: objectId(1111111111),
  name: "userOne",
  email: userone@user.com
  picture: "link to profile picture"
},

{
  _id: objectId(2222222222),
  name: "userTwo",
  email: usertwo@user.com
  picture: "link to profile picture"
},

{
  _id: objectId(3333333333),
  name: "userThree",
  email: userthree@user.com
  picture: "link to profile picture"
}

и вот коллекция сообщений >>

{
  _id: objectId(44444444444),
  title : "Title of the Post",
  content: "Some Content",
  author: objectId(3333333333)
  likes: [
     0: {likeBy:objectId(1111111111),
         Date: "Date of Like"},

     1: {likeBy:objectId(2222222222),
         Date: "Date of Like"}
   ],
  comments: [
     0 : {user: objectId(1111111111),
          comment: "Nice",
          Date: "Date of comment" },

     1 : {user: objectId(2222222222),
          comment: "Good",
          Date: "Date of comment" }
   ]
}

поэтому моя цель - получить сведения об авторе, сведения о понравившемся пользователе, комментарии о пользователе с помощью механизма агрегирования MongoDB. Как это можно сделать, Я уже пытался агрегировать, чтобы сделать это, но не смог, может кто-нибудь заставить меня сделать это правильно

и это мой желаемый вывод


{
  _id: objectId(44444444444),
  title : "Title of the Post",
  content: "Some Content",
  author: {objectId(3333333333),
           name: "author's name from user collection",
           picture: "author's picture link form user collection" }
  likes: [
     0: {likeBy:objectId(1111111111),
         name: "user's name from user collection",
         picture: "user's picture link form user collection",
         Date: "Date of Like"},

     1: {likeBy:objectId(2222222222),
         name: "user's name from user collection",
         picture: "user's picture link form user collection",
         Date: "Date of Like"}
   ],
  comments: [
     0 : {user: objectId(1111111111),
          comment: "Nice",
          name: "user's name from user collection",
          picture: "user's picture link form user collection",
          Date: "Date of comment" },

     1 : {user: objectId(2222222222),
          comment: "Good",
          name: "user's name from user collection",
          picture: "user's picture link form user collection",
          Date: "Date of comment" }
   ]
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...