我有以下子文档:
{
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})
但是,这会返回所有文档。
最佳答案
所有具有任何子文档且日期在开始日期和结束日期范围之间的文档都可以使用以下方式检索:
const conditions = {
'bar': {
$elemMatch: {
'date': {
$gte: new Date(start_date),
$lte: new Date(end_date)
}
}
}
}
Foo.find(conditions)
这将返回所有文档,其中至少有一个子文档的日期在条件
中指定的范围内。
$elemMatch
operator用于在 bar 子文档的 date
字段上实现此条件。
关于javascript - Mongoose 从 html datepicker 中查找 2 个日期之间的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55482626/