배열 필드가 포함된 문서를 일치시키려면 $elemMatch 연산자를 사용하십시오. 문서로 컬렉션을 만들자 −
> db.demo592.insertOne( ... { ... "id":101, ... "details" : [ ... { "Name" : "Chris", "Value" : "200"}, ... {"Name" : "David", "Value" : "800"} ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e930d8ffd2d90c177b5bcd6") } > db.demo592.insertOne( ... { ... id:102, ... "details" : [ ... { "Name" : "Chris", "Value" : "500"}, ... {"Name" : "David", "Value" : "900"} ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e930d90fd2d90c177b5bcd7") }
find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -
> db.demo592.find();
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" : ObjectId("5e930d8ffd2d90c177b5bcd6"), "id" : 101, "details" : [ { "Name" : "Chris", "Value" : "200" }, { "Name" : "David", "Value" : "800" } ] } { "_id" : ObjectId("5e930d90fd2d90c177b5bcd7"), "id" : 102, "details" : [ { "Name" : "Chris", "Value" : "500" }, { "Name" : "David", "Value" : "900" } ] }
다음은 일치하는 쿼리입니다 -
> db.demo592.find( ... { ... "$and" : [ ... { "details" : { "$elemMatch" : { "Name" : "Chris", "Value" : { "$gte" : "500" } } } }, ... { "details" : { "$elemMatch" : { "Name" : "David", "Value" : { "$gte" : "600" } } } } ... ] ... } ... );
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" : ObjectId("5e930d90fd2d90c177b5bcd7"), "id" : 102, "details" : [ { "Name" : "Chris", "Value" : "500" }, { "Name" : "David", "Value" : "900" } ] }