В случай, че използвате поне MongoDB v3.2, можете да използвате $arrayElemAt
оператор за това. Заявката по-долу прави това, което искате. Той обаче няма да върне никакви данни за извадката, която сте предоставили, тъй като "Instructions.1": { $exists: true }
филтър премахва примерния документ.
db.getCollection('Orders').aggregate([{
$match: {
"Instructions.1": {
$exists: true
}
}
}, {
$project: {
"_id": 0,
"UserId": "$User.EntityId",
"ItemName": { $arrayElemAt: [ "$Items.Details.ItemName", 0 /* first item! */] }
}
}])