sql >> Database teknologi >  >> NoSQL >> MongoDB

Forkert optælling fra aggregeringsforespørgsel

Problemet er, at her:

"sp": {
    $split: [
        "$sourceList.source",
        "\n"
    ],
    $split: [
        "$sourceList.source",
        " "
    ]
}

kun den anden $split bliver eksekveret af MongoDB, og det returnerer hello\nworld som én streng. Der er ingen sådan "kaskade"-syntaks, da det simpelthen er den samme JSON-nøgle $split så sidste vinder.

For at rette op på det kan du bruge $reduce for at anvende $split med mellemrum på en række opdelt med \n værdier:

{
    $project: {
        "sp": {
            $reduce: {
                input: { $split: [ "$sourceList.source", "\n" ] },
                initialValue: [],
                in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
            }
        }
    }
}

Mongo Playground



  1. Hvordan opretter man et indlejret indeks i MongoDB?

  2. Gaffelproces:Fejl under levering af muffe:Knækket rør

  3. Hvordan forespørger man MongoDB direkte fra Ruby i stedet for at bruge Mongoid?

  4. Kan ikke oprette forbindelse til Redis fra Docker