sql >> Databasteknik >  >> NoSQL >> MongoDB

FieldPath-fältnamn får inte innehålla '.' i $grupp

Eftersom du har ett enda gruppfält är det bästa sättet att bara använda _id gruppnyckel på det fältet och skapa ett annat $project pipeline som kommer att omforma _id nyckel från föregående pipeline till önskat underdokument som du vill ha. Till exempel

db.analytics.aggregate([
    {
        "$match": {
            "eventArgs.type": 'touchstart', 
            "eventType": 'mousedown', 
            "creationDateTime": { "$gte": ISODate("2017-02-24T000:00:00.000Z") } 
        }
    },
    {
        "$group": {
            "_id": "$eventArgs.elementId",
            "count": { "$sum": 1 }
        }
    },
    {
        "$project": {
            "eventsArgs.elementId": "$_id",
            "count": 1, "_id": 0
        }
    }
]);

Följande bör också fungera:

db.analytics.aggregate([
    {
        "$match": {
            "eventArgs.type": 'touchstart', 
            "eventType": 'mousedown', 
            "creationDateTime": { "$gte": ISODate("2017-02-24T000:00:00.000Z") } 
        }
    },
    {
        "$group": {
            "_id": {
               "eventArgs": {
                   "elementId": "$eventArgs.elementId"
               }
            },
            "count": { "$sum": 1 }
        }
    }
]);



  1. Spara strängar igen som buffertar på vissa operativsystem, inte andra?

  2. Kör Heroku bakgrundsuppgifter med endast 1 webbdyno och 0 arbetardyno

  3. Hur man tillämpar uppdatering med filtrerad positionsoperator med arrayFilters

  4. Kan kommandot redis incr begränsas till ett specifikt antal?