यदि आप कम से कम 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! */] }
}
}])