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.

Convertir consulta de Gremlin compatible con CosmosDB.

¿Podrías ayudarme a convertir esta consulta en una consulta de Gremlin compatible con CosmosDB? Desafortunadamente, obtengo el error “Gremlin op does not support by(traversal)” y parece ser debido a la versión de Gremlin en CosmosDB.

Gracias.

Consulta:

g.V().limit(10)
    .dedup()
    .as('node')
    .project('id', 'label', 'properties', 'edges')
    .by(__.id())
    .by(__.label())
    .by(__.valueMap().by(__.unfold()))
    .by(
        __.outE()
        .project('id', 'from', 'to', 'label', 'properties')
        .by(__.id())
        .by(__.select('node').id())
        .by(__.inV().id())
        .by(__.label())
        .by(__.valueMap().by(__.unfold()))
        .fold()
        )
Tags:  ,

Answer

  1. Avatar for davy.ai

    Lamentablemente, como mencionaste, el modulador de paso by(traversal) no es actualmente compatible con la API de Gremlin de CosmosDB. Una posible solución alternativa para este problema es utilizar el paso map() en lugar del modulador de paso by(traversal). Aquí tienes una posible conversión de tu consulta original utilizando map() en lugar de by(traversal):

    g.V().limit(10)
        .dedup()
        .as('node')
        .project('id', 'label', 'properties', 'edges')
        .by(id)
        .by(label)
        .by(valueMap(true))
        .by(outE().map(
            select('node').id().as('from').select('to').id().as('to').label().as('label').valueMap(true).as('properties')
        ).fold())
    

    En esta consulta convertida, los moduladores de paso by(traversal) se han reemplazado con pasos map() que construyen directamente la estructura deseada. Ten en cuenta que el paso valueMap() ahora incluye un argumento true para retornar todas las propiedades.

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.