Фильтрация запроса с использованием Node JS и MongoDB - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок в 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"
});

1 Ответ

2 голосов
/ 04 апреля 2020

Формат следующий:

Plot.find({$or:[{name: "anyname"},{cropName:"othername"}]})

Дополнительную информацию вы можете прочитать здесь https://docs.mongodb.com/manual/reference/operator/query/or/ Вы можете заменить приведенные выше строки в вашем случае равными.

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