选择所有对象的日期在mongodb字段值的两个日期之间

时间:2019-08-23 01:58:14

标签: node.js mongodb mongoose

从mongodb获取数据有点麻烦。我有一个这样的收藏:

    Activities = [
          ... some another activity object item ... ,

          {
              type: "special"
              dates: {
                  begin: ISODate("2019-07-07T17:00:00.000Z"),
                  end: ISODate("2019-07-20T17:00:00.000Z"),
                  note: ""
              },
              status: "pending"
          } ,
          ,
          {
              type: "event"
              dates: {
                times: {
                    from: "12:00",
                    to: "15:00"
                  },
                  begin: ISODate("2019-07-21T17:00:00.000Z"),
                  end: ISODate("2019-08-29T17:00:00.000Z"),
                  note: ""
              },
              status: "pending"
          } ,

          ... some another activity object item ...
      ]

我要获取所有活动数据,其数据为:dates.begin

_Activities.find({
        "dates.end" : {
            $lte : "2019-08-31T17:00:00.000Z"
        },
        "dates.begin" : {
            $gte : "2019-07-15T17:00:00.000Z"
        }
    }, callback);
// return [];


_Activities.find({
        "dates.end" : {
            $lte : "2019-08-30T17:00:00.000Z"
        }
    }, callback);
// return [] too;

我不知道我在哪里错了,任何人都有解决方案可以帮助我:((((感谢您抽出宝贵的时间。

2 个答案:

答案 0 :(得分:0)

因为您的字段的类型为Date,所以您需要传递Date进行比较。这样的事情可能会起作用:

$lte : new Date("2019-08-31T17:00:00.000Z")

答案 1 :(得分:0)

您可以将日期作为javascript日期对象传递

dates: {
  end: { $lte: new Date('2019-08-31T17:00:00.000Z') } ,
  begin: { $gte: new Date('2019-07-15T17:00:00.000Z') }
}