Bạn có thể sử dụng khung tổng hợp:
db.test.aggregate([
{ $unwind: '$arr' },
{ $limit: 1 },
{ $project: { _id: 0, arr: 1 } },
{ $unwind: '$arr' },
{ $skip: 1 },
{ $limit: 1 }
])
Lợi nhuận:
{ "arr": 22 }
Chỉnh sửa: Người đăng ban đầu đã sửa đổi giải pháp của tôi để phù hợp với nhu cầu của anh ấy và đưa ra những điều sau:
db.test.aggregate([
{ $match: { name:"Olivia" } },
{ $project: { _id: 0,arr: 1 } },
{ $unwind: '$arr' },
{ $skip: 1 },
{ $limit:1 },
{ $unwind: "$arr" },
{ $skip: 2 },
{ $limit: 1 }
])
Truy vấn này sẽ dẫn đến { arr: 77 }
dựa trên dữ liệu mở rộng do OP cung cấp. Lưu ý rằng $ bỏ qua và $ giới hạn là cần thiết để chọn các phần tử phù hợp trong phân cấp mảng.