Trong trường hợp bạn đang sử dụng ít nhất MongoDB v3.2, bạn có thể sử dụng $ arrayElemAt
toán tử cho điều đó. Truy vấn dưới đây thực hiện những gì bạn muốn. Tuy nhiên, nó sẽ không trả về bất kỳ dữ liệu nào cho mẫu bạn đã cung cấp vì "Instructions.1": { $exists: true }
bộ lọc xóa tài liệu mẫu.
db.getCollection('Orders').aggregate([{
$match: {
"Instructions.1": {
$exists: true
}
}
}, {
$project: {
"_id": 0,
"UserId": "$User.EntityId",
"ItemName": { $arrayElemAt: [ "$Items.Details.ItemName", 0 /* first item! */] }
}
}])