python - 使用python进行简单的mongodb搜索
问题描述
我有一个非常小的脚本,它试图在 mongodb 中找到一些文档,其中某个字段具有今天的日期。
对我来说,作为一个菜鸟,看起来我的关系很好——但我没有得到任何结果。
想知道它是否与我的日期格式有关?
这是我的脚本:
import pymongo
from datetime import date
thedate = date.today().isoformat()
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["hotels"]
collection = db["grand_native_test"]
query = {"skaptdato": {"$gt": thedate} }
doit = collection.find(query)
print(query)
print(collection)
for x in doit:
print(x)
结果很简单:
{'skaptdato': {'$gt': '2019-05-30'}}
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), u'hotels'), u'grand_native_test')
我在这个非常基本的脚本上花了大约 4 个小时——但我终其一生都无法弄清楚。
顺便说一句:运行 mongodb 3.6.3、最新的 pymongo-release 和 python 2.7.15。
BTW-2:db-fields 的格式还包括分钟和秒 --> 2019-05-30 13:54:00.645Z ...
我当然希望你们中的一个聪明人对一个可怜的菜鸟有所暗示。
解决方案
我认为问题出在数据类型上。例如,数据库的字段包含ISODate
类型并与string
类型进行比较。使用下一个代码MongoDB
:
{skaptdato: {'$gt': ISODate('2019-05-30')}}
使用下一个代码pymongo
:
from datetime import datetime
...
your_date_string = '2019-05-30'
date_string_to_date = datetime.strptime(your_date_string, '%Y-%m-%d')
...
{'skaptdato': {'$gt': date_string_to_date}}
推荐阅读
- c# - C#中线程同步的单锁对象或多锁对象
- python - 我如何使用 Python 来识别导致趋势增加和减少的因素(类似于 Power BI 的 Insights 功能)
- sql-server - 在 SQL Server 中计算总数的百分比
- android - 尝试将 Firebase 与 AndroidX 一起使用会产生错误: Failed resolution of: Landroid/support/v4/util/ArrayMap;
- macos - 允许 safe.duckduckgo.com 但在 Mac 上阻止 duckduckgo.com(可能在主机文件中)?
- npm - 使用 CLI 将成员添加到 npm org
- git - 如何从 Source Git 更新 VS/Git 中的本地 Master 分支?
- user-interface - UWP MediaElement 未关闭
- r - 如何创建一个循环来检查一个值是否大于并且在特定的天数内保持大于某个数字?
- swift - Swift Playgrounds Apple 每个人都可以编写应用程序练习