亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Mongo:投影后過濾

Mongo:投影后過濾

GCT1015 2022-12-20 16:15:34
我正在使用 pymongo。我的字段之一是:published_date這是一個格式為2020/03/10 07:20:09我可以使用以下聚合將此值轉換為日期時間:isodate = datetime.now()pipeline = [    {'$limit': 2},    {'$project': {         'date':'$published_date',        'date2': {            '$dateFromString': {                'dateString': '$published_date',                }            },        }    }]cursor = TEST_COLLECTION.aggregate(pipeline)list(cursor)date2轉換為日期時間的值在哪里(已經工作)?,F在,應該過濾文檔列表,例如date2 >= isodate 我嘗試通過實施來做到這一點:'date2': {                 '$filter': {                    'input': {                        '$dateFromString': {                            'dateString': '$published_date',                            }                        },                    'as': "date2",                    'cond': {                         '$gte': ['$$date2', isodate]                         }                    }                 } 但它似乎不起作用,因為我收到以下錯誤:OperationFailure:$filter 的輸入必須是數組而不是日期更新 正如評論中所問,數據由具有多個字段的文檔組成,published_date是其中之一。我希望輸出符合 . 過濾器的文檔列表published_date >= datetime.now()。也許解決方案不是管道,但我不確定,因為這是我第一次使用aggregates.有什么想法嗎?
查看完整描述

1 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

忘記 $filter。它有不同的用途。您希望管道中有一個額外的 $match 階段來過濾掉$project 階段生成的文檔:


pipeline = [

    {'$limit': 2},

    {'$project': { 

        'date':'$published_date',

        'date2': {

            '$dateFromString': {

                'dateString': '$published_date',

                }

            },

        }

    },

    {'$match': {'date2': {'$gte': isodate}}}

]

假設你isodate是一個有效的日期對象。


查看完整回答
反對 回復 2022-12-20
  • 1 回答
  • 0 關注
  • 78 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號