我们可以在 GraphQL 中编写 Mongodb 查询吗?
Posted
技术标签:
【中文标题】我们可以在 GraphQL 中编写 Mongodb 查询吗?【英文标题】:Can we write Mongo DB query in GraphiQL? 【发布时间】:2021-04-20 16:41:38 【问题描述】:我想知道是否可以使用 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",
"Serial_No":"1111",
"Time_Record":"2020-05-01 06:01:00"
"_id":"$oid":"5ff6ad894d0d2a1c6ce0fc3e",
"Serial_No":"1111",
"Time_Record":"2020-05-01 06:02:00"
"_id":"$oid":"5ff6ad894d0d2a1c6ce0fc3z",
"Serial_No":"1111",
"Time_Record":"2020-05-01 06:03:00"
"_id":"$oid":"5ff6ad894d0d2a1c6ce0fc3v",
"Serial_No":"1111",
"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",
"Serial_No":"1111",
"Time_Record":"2020-05-01 06:02:00"
"_id":"$oid":"5ff6ad894d0d2a1c6ce0fc3z",
"Serial_No":"1111",
"Time_Record":"2020-05-01 06:03:00"
现在我想在 GraphiQL 中获得相同的输出
基本上,我不确定如何使用此查询,尤其是如何在 GraphiQL 中提及这部分 '$gt': from_date, '$lt': to_date
coll.find("Serial_No": Serial_No, "Time_Record" : '$gt': from_date , '$lt': to_date).limit(number_limit).skip(number_skip)
【问题讨论】:
【参考方案1】:我建议使用来自 mongodb Official Doc 的 GraphQL 原生支持 其中还包括Custom Resolver
【讨论】:
以上是关于我们可以在 GraphQL 中编写 Mongodb 查询吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在不使用 prisma 的情况下在我的 graphQL 服务器中使用 MongoDB 吗?
.Net Core 上的 GraphQL、MongoDB - 中间件?