При выполнении поиска $ в моих схемах он всегда возвращает пустой массив. Что я делаю неправильно?
Сбор результатов
const resultSchema = new mongoose.Schema({
trial: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Trial',
required: true
}
});
Пробная коллекция
const trialSchema = new mongoose.Schema({
name: {
type: String,
required: true
}
});
Совокупный
Result.aggregate([
{
$lookup: {
from: 'trial',
localField: 'trial',
foreignField: '_id',
as: 'x'
}
}
])
.exec()
.then(results => ({ results }))
"x" в конце всегда оказывается пустым массивом.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


проверьте название коллекции. В совокупной функции "испытание" начинается с нижнего регистра, в коллекции результатов "Пробное" начинается с верхнего регистра.
Посмотрите на отдельный документ в коллекции результатов в консоли mongodb. Может быть, мангуст использует странное форматирование
Пытался удалить коллекции, исправил заглавные буквы в каждой модели, воссоздал все документы. Тот же результат. Также попытался воспроизвести запрос в консоли mongo, тот же результат ...
Хорошо, только что нашел ответ прямо здесь: https://stackoverflow.com/a/45481516/3415561
Поле «от» в поиске должно быть названием вашей коллекции, а не названием модели. Следовательно, это слово во множественном числе. Вот это
from: 'trials'
вместо
from: 'trial'
Также убедитесь, что тип поля должен быть таким же. Пример: - Строка со строкой, ObjectId с ObjectId
В моем случае я по ошибке поставил $ перед названием коллекции:
{$lookup: {
from: '$users', // <- incorrect
foreignField: '_id',
localField: 'userid',
as: 'users'
}},
это должно было быть
{$lookup: {
from: 'users', // <- correct
foreignField: '_id',
localField: 'userid',
as: 'users'
}},
Спасибо за ответ! Изменил его на «Пробный» в поле поиска, не имеет никакого эффекта. Кроме того, функция заполнения работает с этими схемами, так что я думаю / надеюсь, что это не проблема.