MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongo-Aggregation, projizieren Sie ein Teilfeld des ersten Elements im Array

Falls Sie mindestens MongoDB v3.2 verwenden, können Sie den $arrayElemAt Betreiber dafür. Die folgende Abfrage macht, was Sie wollen. Es werden jedoch keine Daten für das von Ihnen bereitgestellte Beispiel zurückgegeben, da "Instructions.1": { $exists: true } Filter entfernt das Beispieldokument.

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