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

필드에 대해 문서의 교차를 집합적으로 일치시키는 MongoDB 쿼리

<시간/>

이를 위해 집계()를 사용합니다. 먼저 문서로 컬렉션을 생성해 보겠습니다. −

> db.demo393.insertOne(... {... Id1:"1",... 이름:"Chris",... Id2:"100"... }... );{ "승인됨" :true, "insertedId" :ObjectId("5e5e6dd522064be7ab44e804")}> db.demo393.insertOne(... {... Id1:"1",... 이름:"Chris",... Id2 :"101"... }... );{ "승인됨" :true, "insertedId" :ObjectId("5e5e6dd522064be7ab44e805")}> db.demo393.insertOne(... {... Id1:"3" ,... 이름:"크리스",... Id2:"100"... }... );{ "승인됨":true, "insertedId":ObjectId("5e5e6dd522064be7ab44e806")}> db.demo393. insertOne(... {... Id1:"3",... 이름:"Mike",... Id2:"101"... }... );{ "승인됨" :true, "insertedId " :ObjectId("5e5e6dd522064be7ab44e807")}

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

> db.demo393.find();

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

{ "_id":ObjectId("5e5e6dd522064be7ab44e804"), "Id1":"1", "이름":"크리스", "Id2":"100" }{ "_id":ObjectId("5e5e6dd522064be7ab"4) , "Id1":"1", "이름":"크리스", "Id2":"101" }{ "_id":ObjectId("5e5e6dd522064be7ab44e806"), "Id1":"3", "이름":" 크리스", "Id2":"100" }{ "_id":ObjectId("5e5e6dd522064be7ab44e807"), "Id1":"3", "이름":"마이크", "Id2":"101" }

다음은 필드에 대한 문서의 교차를 집합적으로 일치시키는 쿼리입니다 -

> db.demo393.aggregate([... { "$match":{ "이름":"크리스" } },... { "$group":{... "_id":"$ Id1",... "docs":{ "$push":"$$ROOT" },... "count":{ "$sum":1 }... }},... { "$ match":{... "count":{ "$gt":1 },... "docs":{... "$all":[... { "$elemMatch":{ "Id2" :"100" } },... { "$elemMatch":{ "Id2":"101" } }... ]... }... }}... ])

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

{ "_id" :"1", "docs" :[ { "_id" :ObjectId("5e5e6dd522064be7ab44e804"), "Id1" :"1", "이름":"크리스", "Id2":" 100" }, { "_id":ObjectId("5e5e6dd522064be7ab44e805"), "Id1":"1", "이름":"크리스", "Id2":"101" } ], "개수":2 }