我们可以在 GraphiQL 中编写 Mongo DB 查询吗?

问题描述

我想知道是否可以使用 Mongo DB 查询来过滤 GraphiQL 中的数据。

实际上,我使用 PyMongo、flask 和 GraphiQL 制作了一个 API。

Ex - 在 Mongo DB 里面的一个集合中我有以下 5 个文件 -:

Mongo DB 中的数据

{"_id":{"$oid":"5ff6ad894d0d2a1c6ce0fc3d"},"Serial_No":"1111","Time_Record":"2020-05-01 06:00:00"
} 

{"_id":{"$oid":"5ff6ad894d0d2a1c6ce0fc3l"},"Time_Record":"2020-05-01 06:01:00"
} 

{"_id":{"$oid":"5ff6ad894d0d2a1c6ce0fc3e"},"Time_Record":"2020-05-01 06:02:00"
} 

{"_id":{"$oid":"5ff6ad894d0d2a1c6ce0fc3z"},"Time_Record":"2020-05-01 06:03:00"
} 

{"_id":{"$oid":"5ff6ad894d0d2a1c6ce0fc3v"},"Time_Record":"2020-05-01 06:04:00"
} 

现在不使用 GraphiQL,我在 MongoDB 中执行以下查询,以过滤“2020-05-01 06:00:00”和“2020-05-01 06”之间的“Serial_No”、“Time_Records”数据: 04:00",大小限制 = '2' & skip = '1' 用于分页

def get_filter_data(Serial_No,from_date,to_date,number_limit,number_skip):
    data = coll.find({"Serial_No": Serial_No,"Time_Record" : {'$gt': from_date,'$lt': to_date}}).limit(number_limit).skip(number_skip)
    for col in data:
        pprint.pprint(col)
    print("Count is : ",number_limit)
    return data

我很高兴!!!

它可以工作并提供所需的输出 -:

我在执行上面的 Mongo 查询后得到的正确输出

{"_id":{"$oid":"5ff6ad894d0d2a1c6ce0fc3e"},"Time_Record":"2020-05-01 06:03:00"
} 

现在我想在 GraphiQL 中获得相同的输出

基本上,我不知道如何使用这个查询,尤其是如何在 GraphiQL 中提及这部分 {'$gt': from_date,'$lt': to_date}

coll.find({"Serial_No": Serial_No,'$lt': to_date}}).limit(number_limit).skip(number_skip)

解决方法

我建议使用来自 mongodb Official Doc 的 GraphQL 原生支持 其中还包括 Custom Resolver