как искать во встроенном документе, и этот встроенный документ имеет идентификатор с помощью mongodb - PullRequest
0 голосов
/ 24 июня 2019

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

Я имею в виду, что в моем встраиваемом документе есть переменная с именем user, которую я хочу загрузить в свои данные путем поиска.

Вот как мои документы:

"_id" : ObjectId("5d0f6a993702da22bc00474d"),
"quotes" : [
   {
     "amount" : NumberInt(100), 
     "user" : {
        "_id" : ObjectId("5cc69f7f46ab4cedda5c3c12")
     }, 
     "details" : "some quote details", 
     "_id" : ObjectId("5d0f6a993702da22bc00474c"), 
     "status" : "a"
    },
    {
      "amount" : NumberInt(120), 
      "user" : {
         "_id" : ObjectId("5cc69kij46ab4cedda5c3c12")
      }, 
      "details" : "some quote details 2", 
      "_id" : ObjectId("5d0f6a993702da22bc00484k"), 
      "status" : "a"
     }
],
"status" : "Approved", 
"title" : "gardening", 
"created_at" : NumberInt(1560841417)

, поэтому я хочумой вывод будет таким:

"_id" : ObjectId("5d0f6a993702da22bc00474d"),
"quotes" : [
        {
            "amount" : NumberInt(100), 
            "user" : {
                "_id" : ObjectId("5cc69f7f46ab4cedda5c3c12"),
                "firstName": "John",
                "lastNAme": "Doe",
                "phone": 514298742
            }, 
            "details" : "some quote details", 
            "_id" : ObjectId("5d0f6a993702da22bc00474c"), 
            "status" : "a"
        },
        {
            "amount" : NumberInt(120), 
            "user" : {
                "_id" : ObjectId("5cc69kij46ab4cedda5c3c12")           
                "firstName": "Jane",
                "lastNAme": "Doe",
                "phone": 5148547642
            }, 
            "details" : "some quote details 2", 
            "_id" : ObjectId("5d0f6a993702da22bc00484k"), 
            "status" : "a"
        }
],
"status" : "Approved", 
"title" : "gardening", 
"created_at" : NumberInt(1560841417)

1 Ответ

0 голосов
/ 24 июня 2019

Я нашел решение .. это сработало для меня ..

.aggregate([
  {
    {
      "$unwind": {
        "path": "$quotes",
        "preserveNullAndEmptyArrays": true
       }
    },
    {
       "$lookup": {
         "from": "users",
         "localField": "quotes.user._id",
         "foreignField": "_id",
         "as": "quotes.user",
        }
    },
    {
        "$unwind": {
           "path": "$quotes.user",
           "preserveNullAndEmptyArrays": true
         }
     },
     {
        "$group": {
           "_id": null,
           "quotes": {"$push": "$quotes"},
           "status": {"$first": "$status"},
           "title": {"$first": "$title"},
           "created_at": {"$first": "$created_at"},
         }
     },
  }
])

Я отправил свой ответ, если у кого-то есть такая же проблема.

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