forEach()를 사용하여 MongoDB 셸에서 배열 필드 업데이트

forEach()를 사용하여 MongoDB 셸에서 배열 필드 업데이트

오늘은 forEach()를 사용하여 MongoDB 셸을 사용하는 동안 배열 필드를 업데이트하는 방법을 배웁니다.

forEach()를 사용하여 MongoDB 셸에서 배열 필드 업데이트

forEach()를 사용하기 위해 두 개의 문서가 포함된 collection이라는 샘플 컬렉션을 준비하겠습니다. 계속하려면 다음 쿼리를 사용할 수도 있습니다.

예제 코드:

> use updateArrayField
> db.createCollection('collection');
> db.collection.insertMany([
    {
          "name": "Mehvish",
          "gender": "Female",
          "fields" : [
              { "_id" : 1, "items" : [ 1,3,4,5,6,7 ] }
           ]
    },
    {
          "name": "Thomas Christopher",
          "gender": "Male",
          "fields" : [
              { "_id" : 1, "items" : [ 1,3,4,5,6,7 ] }
           ]
    }
]);

다음으로 이 문서를 사용하여 fields.items라는 배열 필드를 업데이트합니다.

"items" : [ 1,3,4,5,6,7]

에게

"items" : [
   {item: 1, key: 0},
   {item: 3, key: 0},
   {item: 4, key: 0},
   {item: 5, key: 0},
   {item: 6, key: 0},
   {item: 7, key: 0}
]

이를 위해 아래와 같이 중첩된 forEach()를 사용할 수 있습니다.

예제 코드:

> var table = db.collection.find();

> table.forEach(function( oneRow ) {
    var newFields = [];

    oneRow.fields.forEach( function( oneField ){
        var newItems = [];

        oneField.items.forEach( function( item ){
            var aNewItem = { item: parseInt(item), key: 0 };
            newItems.push( aNewItem );
        } );

        newFields.push({ _id: oneField._id, items: newItems });
    } )
    db.collection.update(
        { _id: oneRow._id },
        { "$set": { "fields": newFields } }
    );
});

업데이트된 문서를 보려면 mongo 셸에서 다음 쿼리를 실행합니다.

예제 코드:

> db.collection.find()

출력:

{
    "_id" : ObjectId("62a708054eb9c63e48daeba4"),
    "name" : "Mehvish",
    "gender" : "Female",
    "fields" : [
        {
            "_id" : 1,
            "items" : [
                { "item" : 1, "key" : 0 },
                { "item" : 3, "key" : 0 },
                { "item" : 4, "key" : 0 },
                { "item" : 5, "key" : 0 },
                { "item" : 6, "key" : 0 },
                { "item" : 7, "key" : 0 }
            ]
        }
    ]
}
{
    "_id" : ObjectId("62a708054eb9c63e48daeba5"),
    "name" : "Thomas Christopher",
    "gender" : "Male",
    "fields" : [
        {
            "_id" : 1,
            "items" : [
                { "item" : 1, "key" : 0 },
                { "item" : 3, "key" : 0 },
                { "item" : 4, "key" : 0 },
                { "item" : 5, "key" : 0 },
                { "item" : 6, "key" : 0 },
                { "item" : 7, "key" : 0 }
            ]
       }
   ]
}

위의 출력을 얻기 위해 collection에서 모든 데이터를 읽고 forEach()를 사용하여 collection의 모든 단일 문서를 반복합니다. 다음으로 다른 forEach()를 사용하여 지정된 문서의 모든 단일 필드를 반복합니다.

그런 다음 세 번째 forEach()를 사용하여 collectionfields.items 필드 값을 반복합니다. 모든 값을 사용하여 원하는 업데이트를 구성하고 aNewItem 변수에 저장합니다. 이 변수는 push() 메서드를 사용하여 newItem 배열에 추가로 삽입됩니다.

그런 다음 oneField._idnewItems 배열을 사용하여 문서를 만들고 collection을 업데이트하는 데 추가로 사용되는 newFields 배열로 푸시됩니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - MongoDB Array

관련 문장 - MongoDB Document