sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo-aggregation, projicera ett underfält av det första elementet i arrayen

Om du använder minst MongoDB v3.2 kan du använda $arrayElemAt operatör för det. Frågan nedan gör vad du vill. Det kommer dock inte att returnera några data för provet du angav eftersom "Instructions.1": { $exists: true } filter tar bort exempeldokumentet.

db.getCollection('Orders').aggregate([{
    $match: {
        "Instructions.1": {
            $exists: true
        }
    }
}, {
    $project: { 
        "_id": 0, 
        "UserId": "$User.EntityId", 
        "ItemName": { $arrayElemAt: [ "$Items.Details.ItemName", 0 /* first item! */] }
    }
}])



  1. Så här visar du din featureCompatibilityVersion i MongoDB

  2. Multipel användning av positionsoperatorn `$` för att uppdatera kapslade arrayer

  3. Ohanterat löftesavslag:Fel:URL felaktig, kan inte tolkas

  4. MongoDB geo avstånd/radie till användbara enheter