我们可以在 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 吗?

动态生成 GraphQL 模式支持

.Net Core 上的 GraphQL、MongoDB - 中间件?

Graphql 查询在 mongodb 聚合中返回空 id

如何使用GraphQL在MERN应用程序的MongoDB模式中插入数组字段?

如何在不创建 Mongoose 模型的情况下将 GraphQL 与 Mongoose 和 MongoDB 一起使用