我有以下子文档:
{
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})
但是,这将返回所有文档。
答案 0 :(得分:1)
所有具有任何子文档且其日期在开始和结束日期范围之间的文档都可以使用以下方法检索:
open
这将返回至少有一个子文档的日期在from unittest.mock import MagicMock
from io import StringIO
content = '123' # value for demo
# uncomment the line below to read actual file content
# content = open('files/package_name.spec').read()
open = MagicMock()
open.return_value.__enter__.return_value = StringIO(content)
with open('files/package_name.spec') as f:
print(f.read())
f.seek(0)
f.write('abc')
f.seek(0)
print(f.read())
中指定范围内的所有文档。
$elemMatch
operator用于在bar子文档的const conditions = {
'bar': {
$elemMatch: {
'date': {
$gte: new Date(start_date),
$lte: new Date(end_date)
}
}
}
}
Foo.find(conditions)
字段上实现此条件。