Я хочу запросить Mongodb, чтобы получить все машины, принадлежащие одной и той же компании , но Я не хочу искать всю базу данных, а затем проверять каждую запись автомобиля на предмет названия компании Я хочу иметь список всех автомобилей той же компании в одном месте в моей коллекции carGarage Mongo, чтобы я мог сразу получить весь список.
Это та модель, которую я хочу: проблема в том, что названия этих компаний не жестко запрограммированы, то есть, если в базу данных поступит новая запись, мне придется создать новый объект списка с этим именем. Я думаю, что это можно сделать, просто используя некоторые условия if в бэкэнде Nodejs.
carsGarage {
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 [
{-- -- --}
{-- -- --}
{-- -- --}
]
}
но после прочтения о Mongo, главным образом об индексации, я думаю, что есть другой способ сделать это. Так что теперь у меня есть структура как:
carsGarage {
car1 { bmw ,
Model, Year, PriceInINR, Trim,
Engine, Body,color ,transmittion_type;
dealer - id_2: <<
},
car2 {bmw ,
Model, Year, PriceInINR, Trim,
Engine, Body,color ,transmittion_type;
dealer - id_2: <<
},car3 {jaguar ,
Model, Year, PriceInINR, Trim,
Engine, Body,color ,transmittion_type;
dealer - id_2: <<
}
car4 { bmw,
Model, Year, PriceInINR, Trim,
Engine, Body,color ,transmittion_type;
dealer - id_2: <<
},
car5 { jaguar,
Model, Year, PriceInINR, Trim,
Engine, Body,color ,transmittion_type;
dealer - id_2: <<
}
{ ferrari -- -- --}
{ ferrari -- -- --}
{ ferrari -- -- --}
}
Идея состоит в том, чтобы сделать название компании индексом: так, как mongo указывает, когда он создает индексы, он хранит их отдельно, чтобы их можно было искать быстрее, -> и нет необходимости, чтобы индексы были уникальными. тоже может быть неуникальным
например. db.collection.createIndex( { name: -1 } , {unique = true})
, но мы можем просто отказаться от опции {unique = true}
db.collection.createIndex( { name: -1 })
.
Итак, когда я найду все машины любой компании, я получу это быстрее.
Это все, о чем я могу думать, прав я или нет, и как я могу улучшить свою модель, чтобы ускорить поиск?
сейчас моя модель в nodejs выглядит следующим образом
"use strict";
const MONGOOSE = require("mongoose"),
DB = MONGOOSE.connection;
let carGarageSchema = MONGOOSE.Schema({
company: {
type: String,
required: true
},
model: {
type: String,
required: true
},
year: {
type: Number,
required: true
},
PriceInINR: {
type: Number,
required: true
},
trim: {
type: String,
required: true
},
engine: {
type: String,
required: true
},
body: {
type: String,
required: true
},
color: {
type: String,
required: true
},
transmission: {
type: String,
required: true
},
dealer_id: {
type: String,
required: true
}
});
let collection_name = "carsGarage";
let carGarageModel = MONGOOSE.model(collection_name, carGarageSchema);
createAscendingIndex_on_car_make(DB);
module.exports = carGarageModel;
// indexing at schema level --> using node js
function createAscendingIndex_on_car_company(DB, callback) {
let collection = DB.collection(collection_name);
// ? Create the index
collection.createIndex({
company: 1, // specifies : indexing type is ascending indexing
}, function (err, result) {
if (err) {
console.log(err);
}
// callback("result");
});
}