Jika Anda menggunakan setidaknya MongoDB v3.2, Anda dapat menggunakan $arrayElemAt
operator untuk itu. Kueri di bawah ini melakukan apa yang Anda inginkan. Namun, itu tidak akan mengembalikan data apa pun untuk sampel yang Anda berikan karena "Instructions.1": { $exists: true }
filter menghapus dokumen sampel.
db.getCollection('Orders').aggregate([{
$match: {
"Instructions.1": {
$exists: true
}
}
}, {
$project: {
"_id": 0,
"UserId": "$User.EntityId",
"ItemName": { $arrayElemAt: [ "$Items.Details.ItemName", 0 /* first item! */] }
}
}])