Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

두 개의 배열을 해제하는 MongoDB 쿼리

<시간/>

해제한다는 것은 입력 문서에서 배열 필드를 분해하여 각 요소에 대한 문서를 출력하는 것을 의미합니다.

배열을 해제하려면 MongoDB 집계에서 $unwind를 사용합니다. 먼저 문서로 컬렉션을 생성해 보겠습니다. −

> db.demo387.insertOne(... {...... "이름" :"101",... "세부 정보1" :[... {값:100, 값1:50, 값2:40},... {값:200},... {값:300}... ],... "자세히" :[... {값:100, 값1:30, 값2:26}, ... {값:200},... {값:300}... ]... }... );{ "승인됨" :true, "insertedId" :ObjectId("5e5d197022064be7ab44e7f8")} 

find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -

> db.demo387.find().pretty();

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" :ObjectId("5e5d197022064be7ab44e7f8"), "이름" :"101", "Details1" :[ { "값" :100, "값1" :50, "값2" :40 }, { " 값" :200 }, { "값" :300 } ], "자세히" :[ { "값" :100, "값1" :30, "값2" :26 }, { "값" :200 }, { " 값" :300 } ]}

다음은 2개 이상의 배열이 있는 문서를 집계하는 쿼리입니다 -

> db.demo387.aggregate([... { "$unwind":"$Details1" },... { "$unwind":"$Details" },... { "$match":{ "$expr":... { "$eq":["$Details1.Value", "$Details.Value"] }... }}... ])

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" :ObjectId("5e5d197022064be7ab44e7f8"), "Name" :"101", "Details1" :{ "Value" :100, "Value1" :50, "Value2" :40 }, "Details" :{ "값" :100, "값1" :30, "값2" :26 } }{ "_id" :ObjectId("5e5d197022064be7ab44e7f8"), "이름" :"101", "세부 정보1" :{ "값" :200 }, "세부 정보" :{ "값" :200 } }{ "_id" :ObjectId("5e5d197022064be7ab44e7f8"), "이름" :"101", "세부 정보1" :{ "값" :300 }, "세부 정보" :{ "값" :300 } }