티스토리 뷰

반응형

MongoDB NodeJS OR절 array 배열 Like검색


ex data)

{

    "_id" : ObjectId("5c873584cdabf8f762fd1110"),

    "dept_nm" : "개발팀",

    "teams" : [ 

        {

            "team_id" : "T0001",

            "team_nm" : "개발1팀",

            "members" : [ 

                {

                    "user_id" : "admin",

                    "user_nm" : "관리자"

                }, 

                {

                    "user_id" : "test1",

                    "user_nm" : "제니"

                }, 

                {

                    "user_id" : "test2",

                    "user_nm" : "BEN"

                }

            ]

        }, 

        {

            "team_id" : "T0002",

            "team_nm" : "개발2팀",

            "members" : [ 

                {

                    "user_id" : "test3",

                    "user_nm" : "송혜교"

                }, 

                {

                    "user_id" : "test4",

                    "user_nm" : "한지민"

                }

            ]

        }

    ]

}


departments.find(                

                {$or:[

                    { dept_nm : new RegExp(data.searchData)},                                                                           // 부서명 검색

                    { teams: { $elemMatch: { team_nm : new RegExp(data.searchData)}}},                                            // 팀명으로 검색 teams array

                    { teams: { $elemMatch: { members: { $elemMatch: { user_nm : new                     RegExp(data.searchData)}}}}}    // 사용자명으로 검색 teams array > members array

                ]}                

            ).toArray((err, docs) => {

                if(err){

                    console.error(err);

                    reject({err: err})

                    return;

                }

                // 결과 데이터 넘겨줌

                console.log(docs)

                resolve(docs);                                

            });


끗!@#@#$@#$!@#!@#~!@#

반응형