sql >> Databasteknik >  >> NoSQL >> MongoDB

Felaktig räkning från aggregeringsfråga

Problemet är att här:

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

bara den andra $split exekveras av MongoDB och returnerar hello\nworld som en sträng. Det finns ingen sådan "kaskadsyntax", eftersom det helt enkelt är samma JSON-nyckel $split så sist vinner.

För att fixa det kan du använda $reduce för att tillämpa $split med blanksteg på en array av delad med \n värden:

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

Mongo Playground



  1. Hur konverterar man en befintlig relationsdatabas till ett nyckel-värdelager?

  2. Hur lagrar jag blobdata i MongoDB?

  3. gem-install av mongoid kastar en oinitierad konstant i Ruby, fungerar i irb

  4. Hur beräknar man den löpande summan med aggregat?