MongoDb C #: получить все соответствующие поддокументы - PullRequest
0 голосов
/ 21 сентября 2018

Предположим, у меня есть приведенная ниже структура документа Merchant

Merchants

[
   {
      "ID":"1",
      "Name":"Merchant 1",
      "Vendors":[
         {
            "ID":"1",
            "Name":"Vendor 1",
            "Currency":"GBP"
         },
         {
            "ID":"2",
            "Name":"Vendor 2",
            "Currency":"EURO"
         },
         {
            "ID":"3",
            "Name":"Vendor 3",
            "Currency":"GBP"
         }
      ]
   },
   {
      "ID":"2",
      "Name":"Merchant 2",
      "Vendors":[
         {
            "ID":"4",
            "Name":"Vendor 4",
            "Currency":"GBP"
         },
         {
            "ID":"5",
            "Name":"Vendor 5",
            "Currency":"EURO"
         },
         {
            "ID":"6",
            "Name":"Vendor 6",
            "Currency":"GBP"
         }
      ]
   }
]

Теперь я хотел бы получить продавца, чей идентификатор равен 2, и всех его продавцов, чья валюта равна GBP.

Вывод будет

{
      "ID":"2",
      "Name":"Merchant 2",
      "Vendors":[
         {
            "ID":"4",
            "Name":"Vendor 4",
            "Currency":"GBP"
         },
         {
            "ID":"6",
            "Name":"Vendor 6",
            "Currency":"GBP"
         }
      ]
   }

Как я могу это сделать, используя метод .ind в mongodb & C #?

Я думаю о структуре агрегации, но не могу просто сделать эторабота.

1 Ответ

0 голосов
/ 22 сентября 2018
db.Merchants.aggregate(

    // Pipeline
    [
        // Stage 1
        {
            $match: {
                "ID": "2"
            }
        },

        // Stage 2
        {
            $project: {
                ID: 1,
                Name: 1,
                Vendors: {
                    $filter: {
                        input: "$Vendors",
                        as: "vendor",
                        cond: {
                            $eq: ["$$vendor.Currency", "GBP"]
                        }
                    }
                }
            }
        },

    ]



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