Django- Получение и нормализация данных из mongodb
В проекте django я подключился к mongodb без создания моделей. Я просто записываю данные непосредственно в коллекцию с помощью кода python. Все коллекции работают независимо. Например, У меня есть коллекция employee и employment (один сотрудник имеет несколько мест работы). Между коллекциями employee и employment нет отношения foreignkey.
# employee response
{{"emp_id": "S101", "emp_name": "Kim", "dob": "1995-12-30"}
{"emp_id": "S102", "emp_name": "Sasi", "dob": "2000-12-01"}
{"emp_id": "S103", "emp_name": "Shakthi", "dob": "2001-01-01"}}
# employment response
{{"emp_id": "S101", "employment_type": "contract", "status": "terminated", "date": "2017-04-05"},
{"emp_id": "S101", "employment_type": "contract", "status": "pending", "date": "2018-07-09"},
{"emp_id": "S102", "employment_type": "Permanent", "status": "active","date": "2017-04-05"},
{"emp_id": "S103", "employment_type": "Permanent", "status": "active", "date": "2017-04-05"}}
Когда я получаю данные о сотруднике, я хотел бы получить ответ, как показано ниже,
{
{{"emp_id": "S101", "emp_name": "Kim", "dob": "1995-12-30",
"employment_status": {{"emp_id": "S101", "employment_type": "contract", "status": "terminated", "date": "2017-04-05"},
{"emp_id": "S101", "employment_type": "contract", "status": "pending", "date": "2018-07-09"}}
{{"emp_id": "S102", "emp_name": "Sasi", "dob": "2000-12-01",
"employment_status":{"emp_id": "S102", "employment_type": "Permanent", "status": "active","date": "2017-04-05"}}}
}
Как я могу этого добиться? Заранее спасибо.
client = MongoClient("localhost", 27017)
db = client["hrmdb"]
results = db.employee.aggregate([
{
'$lookup': {
'from': "employment",
'localField': 'emp_id',
'foreignField': 'emp_id',
'as': 'employments'
}
}
])
document_list = []
for rec_value in results:
y = json.loads(json_util.dumps(rec_value))
document_list.append(y)
Вышеприведенный код решил мою проблему.