如何使匹配器与日期范围的汇总一起使用?

时间:2018-11-04 11:42:48

标签: javascript mongodb mongoose mongoose-schema

我有一个具有作者的模型(即mongoose.Schema.ObjectId),并且在该模型上有一个日期字段(类型为Date)。

有效,当我这样做时,数据返回:

MyModel.find({
    author: req.user._id,
    started: {
      $gte: start,
      $lte: end
    }
  });

但是我的模式中有一个聚合函数,这是这样的:

myModelSchema.statics.getSomeData = function getSomeData(id, start, end) {
  const query = [
    { $sort: { started: 1 } },
    {
      $lookup: {
        from: 'projects',
        localField: 'project',
        foreignField: '_id',
        as: 'projectdata'
      }
    },
    {
      $lookup: {
        from: 'tasks',
        localField: 'task',
        foreignField: '_id',
        as: 'taskdata'
      }
    }
  ];
  if (start && end) {
    query.unshift({
      $match: {
        $and: [{ started: { $gte: start, $lte: end } }, { author: id }]
      }
    });
  } else {
    query.unshift({ $match: { author: id } });
  }
  return this.aggregate(query);
};

注意:我为作者推送匹配器的那部分,可以让我获得当前作者的所有数据,有效,但我也希望返回日期范围内的数据无效,数据为空,何时将开始日期和结束日期传递给静态函数。

日期格式我传递给聚合函数:'2018-11-04 06:00:00'(字符串)。

1 个答案:

答案 0 :(得分:2)

实际上,您正在将日期对象与根本不起作用的字符串值匹配,因此value也应该是日期对象

for tag in soup.find_all('div', class_='js-diff-progressive-container'):
    print 1
    for div in tag.find_all('div'):
        id = div.get('id')
        if id:
            id = id.split('-')
            print id
            if id[0] == 'diff':
                div2 = div.find_all('div')
                class_div = div2[0]
                if class_div.get('data-path'):
                    changed_class.append(class_div.get('data-path'))