我正在使用MongoDB Haskell包(http://hackage.haskell.org/package/mongoDB)并尝试编写一个使用当前日期的聚合查询。我可以用Haskell的getCurrentTime做到这一点,但也应该可以让MongoDB直接使用当前日期。
似乎包含具有BSON类型Date的字段的唯一方法是使用Haskell UTC构造函数并从haskell传递UTCTime。
有没有办法让类似下面的东西工作?
getNotes :: Action IO [Document]
getNotes = aggregate "delivery_notes"
[ "$match" =: [ "delivery_date" =: [ "$lte" =: "$currentDate" ]
, "delivery_date" =: [ "$lte" =: (Javascript [] "new Date()")]
]
]
答案 0 :(得分:0)
在纯JS中编写可以在查询中直接包含new Date()
语句,但是使用Haskell mongoDB
库我最终在getCurrentTime
库中包含time
getNotes :: Action IO [Document]
getNotes = do
t <- liftIO $ getCurrentTime
aggregate "delivery_notes"
[ "$match" =: [ "delivery_date" =: [ "$lte" =: "$currentDate" ]
, "delivery_date" =: [ "$lte" =: String (formatDateTime t)]
]
]
formatDateTime :: UTCTime -> Text
formatDateTime = tshow . formatTime defaultTimeLocale "%F %R"