#mongodb #mongoose #aggregate #lookup
#mongodb #mongoose #агрегат #поиск
Вопрос:
Мой код успешно компилируется, поскольку я не получаю никаких ошибок. Но массив, который я хотел объединить с полем другой коллекции, по-прежнему пуст.
const express = require('express');
const mongoose = require('mongoose');
const user = require('../schema');
const router = express.Router();
router.get('/', function (req, res) {
user.db1.aggregate([{
$lookup: {
from: 'db2',
localField: 'fullname',
foreignField: 'skills',
as: 'user_Details'
}
}
]).exec(function (err, data) {
if (err) throw err
console.log("getting user data from database")
res.send(data)
})
});
module.exports = router;
Комментарии:
1. Обычно происходит опечатка. Можете ли вы привести пример вашей базы данных (возможно, достаточно одного документа из каждой коллекции)?
2. const UserSchema = новый мангуст. Схема ({идентификатор пользователя: {тип: строка}, полное имя: {тип: строка}, телефон: {тип: номер}, электронная почта: {тип: строка}, }) const skillSchema = новый мангуст. Схема ({идентификатор пользователя:{тип: число}, навыки: {тип: строка},
3. вот как я описал тип в схеме.
4. Хм, я не уверен, что вы имели в виду, написав
user.db1.aggregate(...)
? Что такоеuser.db1
? Синтаксис, о котором я знаю, будет как разuser.aggregate(...
тем, гдеuser
находится связанная модель.5. согласен с тем, что вы сказали, но в схеме я экспортировал модели как db1:users, поэтому здесь я импортировал схему в константу с именем user, и оттуда я использую db1 в качестве модели.