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

배열 내부의 배열을 슬라이스하는 MongoDB 집계

<시간/>

이를 위해 MongoDB에서 집계()를 사용합니다. 그 안에서 $slice를 사용하여 배열 내부의 배열을 슬라이스합니다. 문서로 컬렉션을 만들자 −

> db.demo111.insertOne(
...    {
...       "_id" : 101,
...       "Name" : "Chris",
...       "Details" : [
...          {
...             "_id" : 101,
...             "Score" : 78,
...             "Subjects" : [
...                {
...                   "_id" : "10001",
...                   "SubjectName" : "MySQL"
...                },
...                {
...                   "_id" : "10003",
...                   "SubjectName" : "MongoDB"
...                }
...             ]
...          },
...          {
...             "_id" : 102,
...             "Score" : 87,
...             "Subjects" : [
...                {
...                   "_id" : "10004",
...                   "SubjectName" : "Java"
...                }
...             ]
...          }
...       ]
...    }
... );
{ "acknowledged" : true, "insertedId" : 101 }

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

> db.demo111.find();

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

{
   "_id" : 101, "Name" : "Chris", "Details" : [
      { "_id" : 101, "Score" : 78, "Subjects" : [ { "_id" : "10001", "SubjectName" : "MySQL" },
      { "_id" : "10003", "SubjectName" : "MongoDB" } ] },
      { "_id" : 102, "Score" : 87, "Subjects" : [ { "_id" : "10004", "SubjectName" : "Java" } ] }
   ]
}

다음은 array −

내부에서 배열을 슬라이스하는 쿼리입니다.
> db.demo111.aggregate([
...    { "$addFields": {
...       "Details": {
...          "$map": {
...             "input": "$Details",
...             "as": "out",
...             "in": {
...                "_id": "$$out._id",
...                "Score": "$$out.Score",
...                "Subjects": { "$slice": [ "$$out.Subjects", 1 ] }
...             }
...          }
...       }
...    }}
... ])

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

{
   "_id" : 101, "Name" : "Chris", "Details" : [
      { "_id" : 101, "Score" : 78, "Subjects" : [ { "_id" : "10001", "SubjectName" : "MySQL" } ] },
      { "_id" : 102, "Score" : 87, "Subjects" : [ { "_id" : "10004", "SubjectName" : "Java" } ] }
   ] 
}