Mongoose найти результаты между 2 датами из html datepicker - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть следующие поддокументы:

{
 id: 1,
 date:2019-04-01 00:21:19.000
 },
{
 id: 2, 
 date:2019-03-31 00:21:19.000
} ...
Document schema is :
const barEventSchema = new Schema({
id: {
    type: Number,
    unique: true,
    required: true
},
raw: { type: String },
date: { type: Date },
type: { type: String },

})

const FooSchema = new Schema({
   bar: [barEventSchema]
})

Я хочу сделать запрос на основе диапазона дат, выбранного из ввода html, который имеет значения, такие как 2019-04-01, 2019-03-31.Итак, на сервере я хочу сделать что-то вроде:

//@star_date = 2019-04-01, @end_date = 2019-04-01
Foo.findOne('bar.date' : {$lte : start_date, $gte: end_date})

Однако это возвращает все документы.

1 Ответ

1 голос
/ 02 апреля 2019

Все документы, имеющие любой поддокумент с датой между начальным и конечным диапазоном дат, могут быть получены с помощью:

const conditions = {
  'bar': {
    $elemMatch: {
      'date': {
        $gte: new Date(start_date), 
        $lte: new Date(end_date)
      }
    }
  }
}

Foo.find(conditions)

При этом будут возвращены все документы, в которых имеется хотя бы поддокумент с датой между указанным диапазономв condition.Оператор $elemMatch используется для выполнения этого условия в поле date вложенного документа бара.

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