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

특정 값의 최대 발생을 포함하는 배열로 MongoDB 문서 찾기

<시간/>

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

> db.countOccurrencesDemo.insertOne({"ListOfValues":[65,87,89,65,67,87,87,87]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e06ef9325ddae1f53b621eb")
}
> db.countOccurrencesDemo.insertOne({"ListOfValues":[102,65,87,65,89,65,89,65,89,65]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e06efaa25ddae1f53b621ec")
}

다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 표시하는 쿼리입니다. -

> db.countOccurrencesDemo.find();

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

{ "_id" : ObjectId("5e06ef9325ddae1f53b621eb"), "ListOfValues" : [ 65, 87, 89, 65, 67, 87, 87, 87 ] }
{ "_id" : ObjectId("5e06efaa25ddae1f53b621ec"), "ListOfValues" : [ 102, 65, 87, 65, 89, 65, 89, 65, 89, 65 ] }

다음은 특정 값의 최대 발생을 포함하는 배열이 있는 문서를 찾는 쿼리입니다 -

> db.countOccurrencesDemo.aggregate(
...    [
...       { "$project": {
...          "ListOfValues": 1,
...          "OccurencesValue": {
...             "$size": {
...                "$filter": {
...                   "input": "$ListOfValues",
...                   "as": "v",
...                   "cond": { "$eq": [ "$$v", 65] }
...                }
...             }
...          }
...       }},
...       { "$group": {
...          "_id": "$OccurencesValue",
...          "MyValues": { "$push": "$$ROOT" }
...       }},
...       { "$sort": { "_id": -1 } },
...       { "$limit": 1 }
...    ]
... );

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

{ "_id" : 5, "MyValues" : [ { "_id" : ObjectId("5e06efaa25ddae1f53b621ec"), "ListOfValues" : [ 102, 65, 87, 65, 89, 65, 89, 65, 89, 65 ], "OccurencesValue" : 5 } ] }