es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Graphlookup para construir una lista de enlaces.

Estoy intentando construir una lista de enlaces (con suerte devuelta como un array) a partir de documentos que se referencian entre sí. Estoy utilizando el marco de agregación de MongoDB para que devuelva 4 -> 3 -> 2 -> 1 o [4,3,2,1]. ¿Qué debo hacer para que funcione?

db.collection.aggregate([
  {
    "$graphLookup": {
      "from": "collection",
      "startWith": "$parent",
      "connectFromField": "parent",
      "connectToField": "postId",
      "as": "revisions",

}


}
])

https://mongoplayground.net/p/uMoeQKJW9oN

[
  {
    postId: 1,
    parent: 0
  },
  {
    postId: 2,
    parent: 1,

},
  {
    postId: 3,
    parent: 2,

},
  {
    postId: 4,
    parent: 3
  }
]
Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el marco de agregación de MongoDB para construir una lista de enlaces (devuelta como una matriz) de documentos que se referencian entre sí. Para hacer esto, puede usar el operador $graphLookup. Este operador le permite recorrer un gráfico de documentos y devolver la ruta desde el documento de inicio hasta el documento final.

    Por ejemplo, dados los documentos anteriores, puede utilizar la siguiente canalización de agregación para devolver la ruta desde postId 4 hasta postId 1:

    db.collection.aggregate([
      {
        "$graphLookup": {
          "from": "collection",
          "startWith": "$parent",
          "connectFromField": "parent",
          "connectToField": "postId",
          "as": "revisions"
        }
      }
    ])
    

    Esto devolverá la ruta [4,3,2,1]. Puede probar esto en el Playground de MongoDB aquí.

Comments are closed.