I’m sorry. I may not be very good at English, so my explanation might be inadequate. Please understand
I want to search for the approver_id
within the document_approval_line_array
using the document_approver_idx
value.
{
"_id" : ObjectId("64cc5a9501b7f613484ca9f9"),
"document_submitter" : "woong",
"document_approval_line_id" : ObjectId("64ca0ab82cd80b2168a44736"),
"document_approval_line_array" : [
[
{
"approver_type" : "2",
"approver_id" : "woong",
"approver_name" : "",
"approver_department" : "IT본부",
"approver_title" : "사원",
"approver_shownas" : "테스터"
}
],
[
{
"approver_type" : "2",
"approver_id" : "denny",
"approver_name" : "데니",
"approver_department" : "IT본부",
"approver_title" : "대리",
"approver_shownas" : "UI/UX팀"
}
],
[
{
"approver_type" : "1",
"approver_id" : "reggie",
"approver_name" : "레지",
"approver_department" : "IT본부",
"approver_title" : "팀장",
"approver_shownas" : "개발팀장"
},
{
"approver_type" : "1",
"approver_id" : "luke",
"approver_name" : "루크",
"approver_department" : "IT본부",
"approver_title" : "사원",
"approver_shownas" : "테스터"
}
],
[
{
"approver_type" : "0",
"approver_id" : "test",
"approver_name" : "대장",
"approver_department" : "IT본부",
"approver_title" : "대표이사",
"approver_shownas" : "대표이사"
}
]
],
"document_approver_idx" : NumberInt(2),
"document_approver_nextIdx" : NumberInt(3)
}
db.getCollection("company_document").aggregate([
{
$addFields: {
temp: {
$arrayElemAt: ['$document_approval_line_array', '$document_approver_idx']
}
}
},
{
$match: {
'temp.approver_id': 'reggie'
}
}
]
)
Although this query works correctly, but I don’t want to use addFields. Is it possible?