robo 3t — сбой агрегированного запроса к массиву

#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. Чем этот ответ отличается от существующего? Это даже приводит к еще большей синтаксической ошибке и, по сути, является плагиатом существующего ответа.