¿Es posible unir 3 colecciones separadas en AWS DocumentDB con una sola consulta (similar a la solución del hilo aquí: ¿Cómo puedo realizar "uniones" anidadas (unir 3 o más colecciones) en una canalización de agregación de MongoDB?
Siento que puede que no, pero no creo que AWS salga directamente y lo diga específicamente en cualquier lugar.
La Guía del desarrollador dice:
Amazon DocumentDB admite la capacidad de realizar coincidencias de igualdad (por ejemplo, combinación externa izquierda), pero no admite subconsultas no correlacionadas.
Eso sería más útil si supiera qué es una "subconsulta no correlacionada".
Además, la lista de API de MongoDB que admite DocumentDB dice que el operador de variable $let no es compatible. ¿El operador de variable $let al que se refieren es exactamente igual que la expresión let dentro de la etapa $lookup que se usa en la siguiente consulta para unir 3 colecciones?
db.customers.aggregate([ { $lookup: { from: "orders", let: { customer_id: "$customer_id" }, pipeline: [ { $match: { $expr: { $eq: ["$$customer_id", "$customer_id"] } } }, { $lookup: { from: "orderitems", localField: "order_id", foreignField: "order_id", as: "items" } } ], as: "orders" } } ])¿Es posible unir más de 3 colecciones dentro de una sola consulta NoSQL en AWS DocumentDB y, de no ser así, cuál sería la forma recomendada/más eficiente de hacerlo?
En el documento de DocumentDB :
Amazon DocumentDB admite la capacidad de realizar coincidencias de igualdad (por ejemplo, combinación externa izquierda), pero no admite subconsultas no correlacionadas.
coincidencia de igualdad tiene la siguiente sintaxis:
{ $lookup: { from: <collection to join>, localField: <field from the input documents>, foreignField: <field from the documents of the "from" collection>, as: <output array field> } }subconsultas no correlacionadas tiene la siguiente sintaxis:
{ $lookup: { from: <collection to join>, let: { <var_1>: <expression>, …, <var_n>: <expression> }, pipeline: [ <pipeline to execute on the collection to join> ], as: <output array field> } }Por lo tanto, la segunda sintaxis no es compatible con DocumentDB.