首页 > 解决方案 > 如何使用 get 方法在 django 中使用 pymongo 从 mongodb 集合中获取数据?

问题描述

我有一个 mongodb 数据库,并且我已将该数据库与 django 中的 pymongo 连接起来。我是 django 的新手,我正在尝试获取输入的数据是否存在于集合中,如果存在则使用 get 方法返回该记录

import pymongo
from pymongo import MongoClient
db_name = 'student_db'
client = MongoClient('localhost', 27017)
db_obj = client[db_name]
collection=db_obj['mongo_app_student']

@api_view(['GET'])
def test(request):
    data = request.data
    for x in collection.find():
        if data in x:
            print('entered a right value')
            return Response(data)

/test 上的 TypeError 不可散列类型:'dict'

当我尝试在邮递员中获取输出时出现此错误。请帮忙

标签: python-3.xmongodbdjango-modelsdjango-rest-frameworkdjango-views

解决方案


首先,您应该为此使用 POST 请求,并且由于 find() 返回游标,因此您正在尝试迭代游标。我不确定这是个好主意。并假设request.data是一个 dict() 尝试==用于比较x
也尝试将您从 mongo 获得的内容投射到这样的列表中:

import pymongo
from pymongo import MongoClient
db_name = 'student_db'
client = MongoClient('localhost', 27017)
db_obj = client[db_name]
collection=db_obj['mongo_app_student']

@api_view(['GET', 'POST'])
def test(request):
    response_data = None
    if request.method == 'POST':
        for x in list(collection.find()):
            if data == x:
                print('entered a right value')
                response_data = data
    return Response(response_data )

让我知道事情的后续。


推荐阅读