Что у меня есть:
- список названий компаний: [bmw, tata, ferrari, ...]
- коробка передач: механическая или автоматическая3.
- Цвет автомобиля: красный или белый и т. Д.
- модельный год: с 2010 по 2014
- Минимальная цена и максимальная цена. -> Ценовой диапазон
============================================ ===============================
Что я могу сделать сейчас: если бы у меня был только один объект (т.е. одна компания в companies
), то я бы сделал что-то вроде:
query = {{transmission_type : transmission}, {color : car_color}, {year : model_year}, { $range: [ 0, "$PriceInINR", 25 ] } }
db.companies.cars.find(query)
Но здесь сначала много компаний, а затем у каждой компании есть список автомобилей.
Как мне сделать такой запрос .
Я хочу один запрос, который учитывает диапазон цен.
и еще один без условия ценового диапазона.
Ранние мысли : Я подумал, что мог бы делать запросы к каждой компании в отдельности, поскольку я знаю названия компаний. поэтому находим результат по отдельности и затем помещаем его в массив.
Как мне это сделать, любые другие предложения?
Пробовал и это тоже, но вроде не работает, ПОМОГИТЕ
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"
}
]
}