#mongodb #robo3t
#mongodb #robo3t
Вопрос:
Настройка: Документы в родительской коллекции имеют дочерние поля с идентификаторами дочерних элементов. Документы в дочерней коллекции имеют идентификатор в поле customId, а не _id. Один идентификатор из поля «дочерние элементы» может соответствовать нескольким дочерним элементам.
Что не так: Этот запрос
db.getCollection('parent').aggregate({$lookup: {from: "child", localField: "children", foreignField:"customId", as:"joinedChildren"}})
выполняется корректно в оболочке mongo, но вызывает
Error:
TypeError: pipeline[(pipeline.length - 1)] is undefined :
DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1292:9
DBCollection.prototype.aggregate@:1:355
@(shell):1:1
в robo3T.
Ответ №1:
Проблема исчезла, когда я обернул запрос в []
db.getCollection('parent').aggregate([{$lookup: {from: "child", localField: "children", foreignField:"customId", as:"joinedChildren"}}])
Ответ №2:
db.Parent.Aggregate([{$lookup :
{
From :"child",
localFied:"children",
foreignField:"customId",
as : "joinedchildren"
}
}])
Комментарии:
1. Чем этот ответ отличается от существующего? Это даже приводит к еще большей синтаксической ошибке и, по сути, является плагиатом существующего ответа.