pymongo中的聚合:匹配日期的星期几

时间:2018-03-27 13:22:44

标签: python mongodb aggregation-framework pymongo dayofweek

我有一个mongodb集合,我正试图从中提取一个子集:

  • 日期高于指定日期

  • 日期是星期三,星期四或星期五

到目前为止,这是我的查询:

for element in collection.aggregate( [
        { "$match": {
            "date" : {"$gt" : earliest_date, 
                      "$dayOfWeek" : { "$in": [0,1,2,3,4,5,6] }
                    }
                    }
        },
        { "$sort": {"date": 1} },
        {
            "$group":
                { 
             ....
        }
        }]):

我收到此错误

pymongo.errors.OperationFailure: unknown operator: $dayOfWeek
你能救我一下吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

首先,您需要在日期字段中预测周(星期几),然后才能对其应用过滤器。 "$dayOfWeek"返回1-7个值,其中1(星期日)和7(星期六)。因此,相应地将条件放在预计的领域。

for element in collection.aggregate([
    {"$match": {
        "date": {"$gt": earliest_date}
    }
    },
    {"$project": {
        "date": "$date",
        "week": {"$dayOfWeek": "$date"},
        'anyOtherField': '$anyOtherField'
    }               
    },
    {"$match": {
        "week": {"$in": [4, 5, 6]}
    }
    {"$sort": {"date": 1}},
    {
        "$group":
            {
                ....
            }
    }]):