我正在尝试使用 django 和 python 开发 mongodb 聚合。
我有一个带有名为“sucre”的数据库和一个名为“bdua”的集合的图集服务器
在 settings.py 我有:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'morfeeweb',
'ENFORCE_SCHEMA': False,
'CLIENT': {
'host': 'mongodb+srv://xxxxxx:xxxxxx@xxxxx.xxxxx.xxxxxx.mongodb.net/morfeeweb?retryWrites=true&w=majority',
'port': 27017,
'username': 'xxxxxx',
'password': 'xxxxxxxx',
'authSource': 'admin',
'authMechanism': 'SCRAM-SHA-1'
},
'LOGGING': {
'version': 1,
'loggers': {
'djongo': {
'level': 'DEBUG',
'propagate': False,
}
},
},
},
'sucre': {
'ENGINE': 'djongo',
'NAME': 'sucre',
'ENFORCE_SCHEMA': False,
'CLIENT': {
'host': 'mongodb+srv://xxxx:xxxxxx@xxxxx.xxxxx.xxxx.mongodb.net/sucre?retryWrites=true&w=majority',
'port': 27017,
'username': 'xxxxx',
'password': 'xxxxxxxx',
'authSource': 'admin',
'authMechanism': 'SCRAM-SHA-1'
},
'LOGGING': {
'version': 1,
'loggers': {
'djongo': {
'level': 'DEBUG',
'propagate': False,
}
},
},
}
}
views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
from random import randint
from django.db import connection
@login_required(login_url='/admin/login')
def consolidado(request):
aggretation_sample = connection['sucre'].db.bdua.aggregate([
{
'$match': {'estado': 'AC', 'regimen': 'subsidiado'}
},
{
'$group': { '_id': '$cod_EPS', 'Afiliados': {'$sum': 1}}
},
{
'$sort': {'Afiliados': -1}
}
])
return HttpResponse(aggretation_sample)
它返回 'TypeError at /aseguramiento/ 'DefaultConnectionProxy' 对象不可下标'
请帮忙
答案 0 :(得分:0)
django.db.connection
返回 default
数据库 (see the docs here)。您要使用:
from django.db import connections
aggretation_sample = connections['sucre']...