sql >> Database >  >> NoSQL >> MongoDB

Onjuist aantal van aggregatiequery

Het probleem is dat hier:

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

alleen de tweede $split wordt uitgevoerd door MongoDB en retourneert hello\nworld als één snaar. Er is niet zo'n "cascade"-syntaxis, omdat het gewoon dezelfde JSON-sleutel is $split dus laatste wint.

Om dit op te lossen, kun je $reduce om $split toe te passen door witruimte op een array van gesplitst door \n waarden:

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

Mongo-speeltuin



  1. Hoe een veld uit een MongoDB-document te verwijderen ($ uitgeschakeld)

  2. Mongo Age Group Aggregation

  3. MongoDB filtert meerdere subdocumenten

  4. C# 10gen en mongo:deserialisatie voor leden als interfaces