首页 > 解决方案 > 使用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 ...

我当然希望你们中的一个聪明人对一个可怜的菜鸟有所暗示。

标签: pythonmongodbmongodb-query

解决方案


我认为问题出在数据类型上。例如,数据库的字段包含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}}

推荐阅读