Mongoose聚合$filter函数,在嵌套数组对象上使用日期比较lte和gte 我在Mongo中有一个模式,如下所示: 这是我使用$filter和$gte、$lte operator的聚合代码函数查询 我正在尝试过滤数据,以便在执行下面的代码时返回满足
Mongoose聚合$filter函数,在嵌套数组对象上使用日期比较lte和gteMongoose聚合$filter函数,在嵌套数组对象上使用日期比较lte和gte 我在Mongo中有一个模式,如下所示: 这是我使用$filter和$gte、$lte operator的聚合代码函数查询 我正在尝试过滤数据,以便在执行下面的代码时返回满足,mongoose,aggregate-functions,date-comparison,Mongoose,Aggregate Functions,Date Comparison,Mongoose聚合$filter函数,在嵌套数组对象上使用日期比较lte和gte 我在Mongo中有一个模式,如下所示: 这是我使用$filter和$gte、$lte operator的聚合代码函数查询 我正在尝试过滤数据,以便在执行下面的代码时返回满足查询条件的数据。在这个输出中,我得到了b2数组中的空值 有人能告诉我正确的解决方案吗?当数据集上有可用数据时,为什么会出现这样的结果 如果对start和end变量使用ISODate而不是Date,结果是否会改变?嘿,Patrick,在这种情况下
如果对
start
和end
变量使用ISODate
而不是Date
,结果是否会改变?嘿,Patrick,在这种情况下不会改变结果。幸运的是,我犯了错误,我使用direct$b2作为输入数组,这是完全错误的,我必须将数组作为$s2.b2进行跟踪。因此,这种情况的解决方案是。{{$match:{“s2.b2.date”:{$gte:start,$lte:end}}},{$project:{“farmid”:1,“boxid”:1,“s2.b2”:{$filter:{input:“$s2.b2”,as:“data”,cond:{$and:[{$gte:[“$$data.date”,开始]},{$lte:[“$$data.date”,结束]}]},},}
{
"_id" : ObjectId("5e1d9e1615035fe9867ab058"),
"farmid" : "8f9dbffa-5333-4533-b04c-182e0c147dd8",
"boxid" : "e60bf8df-c75d-11e6-b349-02adcd2575fd",
"s2" : {
"b2" : [
{ "date" : ISODate("2019-10-27T05:30:00.000+05:30"),
"value" : 1761
},
{
"date" : ISODate("2019-09-22T05:30:00.000+05:30"),
"value" : 6033
},
{
"date" : ISODate("2019-06-09T05:30:00.000+05:30"),
"value" : 1581
},
{
"date" : ISODate("2019-05-30T05:30:00.000+05:30"),
"value" : 1663
}
}
let start = new Date("2019-07-01T05:30:00.000+05:30");
let end = new Date("2019-12-31T05:30:00.000+05:30");
{
{
$match: {
"s2.b2.date": { $gte: start, $lte: end }
}
},
{ $project: {
"farmid" : 1,
"boxid":1,
"s2.b2": {
$filter: {
input: "$b2",
as :"data",
cond: {
$and: [
{ $gte:["$$data.date",start] } ,
{ $lte: ["$$data.date",end ] }]
}
}
},
}},
}
[
{
"_id": "5e1d9e1415035fe9867600d7",
"farmid": "7beb32a4-8bf6-49eb-b827-37854a7d0604",
"boxid": "e60bf85c-c75d-11e6-b349-02adcd2575fd",
"s2": {
"b2": null
}
},
{
"_id": "5e1d9e1415035fe9867600d8",
"farmid": "dbd06299-12ee-42db-a6e6-9d4e796bc465",
"boxid": "e60bf85c-c75d-11e6-b349-02adcd2575fd",
"s2": {
"b2": null
}
},
{
"_id": "5e1d9e1415035fe9867600d9",
"farmid": "b7665ed3-cf10-451d-81b2-d14cec213250",
"boxid": "e60bf85c-c75d-11e6-b349-02adcd2575fd",
"s2": {
"b2": null
}
}]