Mongo Query: множество параметров для поиска. не в состоянии понять - PullRequest
0 голосов
/ 09 сентября 2018

Что у меня есть:

  1. список названий компаний: [bmw, tata, ferrari, ...]
  2. коробка передач: механическая или автоматическая3.
  3. Цвет автомобиля: красный или белый и т. Д.
  4. модельный год: с 2010 по 2014
  5. Минимальная цена и максимальная цена. -> Ценовой диапазон

============================================ ===============================

Что я могу сделать сейчас: если бы у меня был только один объект (т.е. одна компания в companies), то я бы сделал что-то вроде:

query = {{transmission_type : transmission}, {color : car_color}, {year : model_year}, { $range: [ 0, "$PriceInINR", 25 ] }  }

db.companies.cars.find(query)

Но здесь сначала много компаний, а затем у каждой компании есть список автомобилей.

Как мне сделать такой запрос .

  1. Я хочу один запрос, который учитывает диапазон цен.

  2. и еще один без условия ценового диапазона.

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

Как мне это сделать, любые другие предложения?

Пробовал и это тоже, но вроде не работает, ПОМОГИТЕ

db.companies.aggregate([ 

  { $match: { company_name: { $in: ["gmc"] } } },

  { $unwind: "$cars" },

  { $replaceRoot: { newRoot: "$cars" } },

  {

    $match: {

      transmission_type: "Automatic",

      color: "Metallic White",

      year: 2015,

      price: { $gt: 0, $lt: 99999999 }

    }

  }

])

============================================ ===============================

псевдо-структура companies коллекции

Companies {
    bmw: [
            car1 {
                Model,  Year, PriceInINR,  Trim,
                Engine, Body,color ,transmittion_type;
                dealer - id_2: <<
            },
            car2 {
                Model,  Year, PriceInINR,  Trim,
                Engine, Body,color ,transmittion_type;
                dealer - id_2: <<

            },car3 {
                Model,  Year, PriceInINR,  Trim,
                Engine, Body,color ,transmittion_type;
                dealer - id_2: <<

            }
        ],

    jaguar: [
            car1 {
                Model,  Year, PriceInINR,  Trim,
                Engine, Body,color ,transmittion_type;
                dealer - id_2: <<

            },
            car2 {
                Model,  Year, PriceInINR,  Trim,
                Engine, Body,color ,transmittion_type;
                dealer - id_2: <<

            }
          ],
    ferrari [
            {-- -- --}
            {-- -- --}
            {-- -- --} 
        ]   
}

============================================ =============================== Актуальная структура коллекции companies в монго дБ

{
        "_id" : ObjectId("5b8ef8b78cc390cca71aa0e5"),
        "company_location" : "USA",
        "company_name" : "buick",
        "__v" : 0,
        "cars" : [
                {
                        "_id" : ObjectId("5b8ef8b6d1a7c2156417de56"),
                        "model" : "ENCLAVE",
                        "year" : 2014,
                        "PriceInINR" : 2537993,
                        "trim" : "Leather FWD",
                        "engine" : "SPORT UTILITY 4-DR",
                        "body" : "3.6L V6 DOHC 24V",
                        "color" : "Silver",
                        "transmission_type" : "Manual",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                },
                {
                        "_id" : ObjectId("5b8ef8b6d1a7c2156417de5d"),
                        "model" : "LaCrosse",
                        "year" : 2011,
                        "PriceInINR" : 4677427,
                        "trim" : "CXL FWD",
                        "engine" : "SEDAN 4-DR",
                        "body" : "3.6L V6 DOHC 24V",
                        "color" : "Grey",
                        "transmission_type" : "Automatic",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                },
                {
                        "_id" : ObjectId("5b8ef8b7d1a7c2156417de8e"),
                        "model" : "ENCORE",
                        "year" : 2013,
                        "PriceInINR" : 4808616,
                        "trim" : "Leather FWD",
                        "engine" : "SPORT UTILITY 4-DR",
                        "body" : "1.4L L4 DOHC 16V TURBO",
                        "color" : "Yellow",
                        "transmission_type" : "Manual",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                },
                {
                        "_id" : ObjectId("5b8ef8b7d1a7c2156417dece"),
                        "model" : "LaCrosse",
                        "year" : 2011,
                        "PriceInINR" : 868875,
                        "trim" : "CXL FWD",
                        "engine" : "SEDAN 4-DR",
                        "body" : "2.4L L4 DOHC 16V",
                        "color" : "Grey",
                        "transmission_type" : "Automatic",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                },
                {
                        "_id" : ObjectId("5b8ef9c1f0412315aa07b65a"),
                        "model" : "VERANO",
                        "year" : 2013,
                        "PriceInINR" : 4380113,
                        "trim" : "Base",
                        "engine" : "SEDAN 4-DR",
                        "body" : "2.4L L4 DOHC 16V FFV",
                        "color" : "Metallic White",
                        "transmission_type" : "Automatic",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                }
        ]
}
{
        "_id" : ObjectId("5b8ef8b78cc390cca71aa0e7"),
        "company_location" : "USA",
        "company_name" : "gmc",
        "__v" : 0,
        "cars" : [
                {
                        "_id" : ObjectId("5b8ef8b6d1a7c2156417de57"),
                        "model" : "TERRAIN",
                        "year" : 2013,
                        "PriceInINR" : 3851710,
                        "trim" : "SLE2 FWD",
                        "engine" : "SPORT UTILITY 4-DR",
                        "body" : "2.4L L4 DOHC 16V FFV",
                        "color" : "Yellow",
                        "transmission_type" : "Manual",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                },
                {
                        "_id" : ObjectId("5b8ef8b6d1a7c2156417de5b"),
                        "model" : "YUKON",
                        "year" : 2015,
                        "PriceInINR" : 3129397,
                        "trim" : "SLE 2WD",
                        "engine" : "SPORT UTILITY 4-DR",
                        "body" : "5.3L V8 OHV 16V",
                        "color" : "Silver",
                        "transmission_type" : "Manual",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                },            
                {
                        "_id" : ObjectId("5b8ef9c1f0412315aa07b659"),
                        "model" : "SIERRA 1500",
                        "year" : 2014,
                        "PriceInINR" : 3649025,
                        "trim" : "SLE Crew Cab 2WD",
                        "engine" : "CREW CAB PICKUP 4-DR",
                        "body" : "5.3L V8 OHV 16V",
                        "color" : "Metallic White",
                        "transmission_type" : "Automatic",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                },
                {
                        "_id" : ObjectId("5b8ef9c1f0412315aa07b666"),
                        "model" : "TERRAIN",
                        "year" : 2012,
                        "PriceInINR" : 1896832,
                        "trim" : "SLT1 FWD",
                        "engine" : "SPORT UTILITY 4-DR",
                        "body" : "3.0L V6 DOHC 24V",
                        "color" : "Metallic White",
                        "transmission_type" : "Automatic",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                },
                {
                        "_id" : ObjectId("5b8ef9c1f0412315aa07b650"),
                        "model" : "ACADIA",
                        "year" : 2012,
                        "PriceInINR" : 2541355,
                        "trim" : "Denali AWD",
                        "engine" : "SPORT UTILITY 4-DR",
                        "body" : "3.6L V6 DOHC 24V",
                        "color" : "Metallic White",
                        "transmission_type" : "Automatic",
                        "dealer_id" : "5b8ee03ffe42df0d94de785d"
                }
        ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...