mongodb - 如何在 MongoDB 中将字符串转换为日期
问题描述
我正在使用 pymongo 查找今天和昨天的所有条目。我已经按照 pymongo 教程进行操作,但我无法完成这项工作。
例如,我有一个这样的示例文档
{
"_id":"1586856578",
"threads": "hello"
}
现在我尝试使用以下代码获取昨天的文档。
result = collection.find({"_id": {"$lt": yesterday}}) #<= Not working
所以我看到某个地方 mongodb 支持字符串迄今为止使用toDate
所以我也试过这个。
from datetime import datetime, timedelta
yesterday = datetime.now() - timedelta(days=1)
dateConversionStage = {"$addFields": {"convertedDate": {"$toDate": "$_id"}}}
result = collection.find({"dateConversionStage": {"$lt": yesterday}})
但仍然返回空。帮我打印所有不超过昨天的文件。
更新
convertedLong = {"$addFields": {"convertedLong": {"$toDecimal": "$_id"}}}
convertedDate = {"$addFields": {"convertedDate": {"$toDate": "convertedLong"}}}
result = collection.aggregate([convertedLong, convertedDate])
for each in result:
print(each)
解决方案
使用 PyMongo 和三个输入文档:
{ "_id" : "1586908800000" } // ISODate("2020-04-15T00:00:00Z")
{ "_id" : "1586736000000" } // ISODate("2020-04-13T00:00:00Z")
{ "_id" : "1585094400000" } // ISODate("2020-03-25T00:00:00Z")
查询查找昨天(今天是15-April-2020
)之前的文档:
import pymongo
import datetime
client = pymongo.MongoClient()
collection = client.test.myCollection
yesterday = datetime.datetime(2020, 4, 14)
result = collection.find( { "$expr": { "$lt": [ { "$toDate": { "$toLong": "$_id" } }, yesterday ] } } )
for doc in result:
print(doc)
输出有两个文档。
推荐阅读
- python - Is there a faster way to check for a bunch of things in a list/set?
- jquery - Animated progressbar list Counter only count last aria-valuenow
- python-3.x - How can I get curses installed for CentOS 6.10 with Python3.6.4?
- animation - Flutter - 从父类或另一个子类调用子类的动画函数
- javascript - how can i setup auto send email to me when click the link
- c# - 使用 C# 以编程方式“单击”网站链接
- java - IBM Redis 数据库 + 春季启动
- javascript - 如何从 Electron 上的预加载脚本中的渲染进程访问 jquery
- reactjs - 在 ReactJS 中包含 SVG 的正确方法是什么?
- git - 如何确定 Azure DevOps 中的 Git Tag 值?