Фильтр на основе массива внутри объекта в mongodb - PullRequest
0 голосов
/ 08 мая 2020

Привет, я использую mon goose для создания объекта, который имеет поле с типом object. У объекта есть еще два поля start_date и end_date. Теперь я получаю запрос, который должен отфильтровать записи, которые не совпадают ни с одним из периодов start_date и end_date. То есть (либо query_end_date end_date)

type : [{
            userId : {
                type : mongoose.Schema.ObjectId,
                required : true
            },
            startDate : {
                type : Date,
                required : true
            },
            endDate : {
                type : Date,
                required : true
            }   
        }]

1 Ответ

1 голос
/ 08 мая 2020

Вы можете сделать запрос с операторами $gt и $lt и синтаксисом для запроса массива вложенных документов:

async function Query(query_start_date, query_end_date){
  try{
    let users = await Model.find({ $or: [{ "field.startDate" : { $gt : query_end_date}} ,
                                   {"field.endDate" : { $lt : query_start_date}} });
    console.log(users);
  } catch(err){
    console.log("Error ", err);
  }

Ссылка

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