Я новичок в MangoDB и Node JS. Я всегда работал с SQL базами данных, и я плохо знаю синтаксис MongoDB. Я хочу попробовать отфильтровать массив, который я получаю из базы данных MongoDB. Я знаю, что JavaScript имеет функцию .filter()
для фильтрации только результатов, содержащих строку. Является ли наилучшей практикой получение всех объектов из MongoDB и фильтрация в Node, или я разрешаю MongoDB выполнять фильтрацию?
Мой Node.JS проект является внутренним проектом, использующим Node.JS и Express для выполнять операции CRUD над базой данных MongoDB. В запросе я отправляю параметр под названием «equalTo», который содержит значение, по которому нужно фильтровать.
var router = express.Router();
var Plot = require("./models/plot");
...
router.get("/plots", (req, res) => {
let query = "" + req.query.equalTo;
Plot.find((err, plots) => {
if (err) {
res.send(err);
}
res.json(plots);
});
});
Фильтрация должна быть фильтром ИЛИ, где все результаты, где либо name
, либо cropName
должен содержать значение строки. Если это возможно, я также хотел бы, чтобы сравнение игнорировало заглавные буквы. Вот схема для объекта Plot
:
const plotSchema = mongoose.Schema({
area: {
type: String,
required: true
},
comments: {
type: String,
required: true
},
cropGroupName: {
type: String,
required: true
},
cropName: {
type: String,
required: true
},
name: {
type: String,
required: true
},
plotId: {
type: Number,
required: true
},
coords: {
type: [],
required: true
},
}, {
collection: "plots"
});