programing

MongoDB, 어레이에서 객체 삭제

abcjava 2023. 4. 6. 20:44
반응형

MongoDB, 어레이에서 객체 삭제

문서:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name',
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]
}

어레이에서 특정 개체를 꺼내는 방법이 있습니까?항목 배열에서 ID 23의 항목 개체 전체를 가져오려면 어떻게 해야 합니까?

시도했습니다.

db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});

하지만 나는 내가 'pull'을 올바르게 사용하지 않는다고 확신한다.제가 알기로는 pull은 배열에서 필드를 가져오지만 객체는 가져오지 않는 것으로 알고 있습니다.

개체 전체를 배열에서 꺼내는 방법

보너스로 mongoose/nodejs로 하려고 하는데 mongoose API에 이런 것이 있는지 잘 모르겠지만 찾을 수 없었습니다.

시험해 보다

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true, // Multi
);

나는 다음과 같은 서류를 가지고 있다.

여기에 이미지 설명 입력

주소 배열에서 주소를 삭제해야 합니다.

인터넷에서 많은 것을 검색한 후 해결책을 찾았다.

Customer.findOneAndUpdate(query, { $pull: {address: addressId} }, (err, data) => {
    if (err) {
        return res.status(500).json({ error: 'error in deleting address' });
    }

    res.json(data);
});

내 데이터베이스:

{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
  "data" : [ 
    { "id" : 1 }, 
    { "id" : 2 }, 
    { "id" : 3 }
  ]
}
    

질문:

db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}

출력:

{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
  "data" : [ 
    { "id" : 1 }, 
    { "id" : 2 }
  ]
}

다음과 같이 시험해 볼 수도 있습니다.

db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})

어레이 내의 단일 레코드의 경우:

db.getCollection('documents').update(
    { },
    {'$pull':{ 'items':{'mobile': 1234567890 }}},
    {new:true}
);

배열에 동일한 휴대 전화 번호를 가진 여러 레코드의 경우:

db.getCollection('documents').update(
    { },
    {
        $pull: {
            items: { mobile: 1234567890 }
        }
    },
    { new:true, multi:true }
)

사용하다$pull데이터를 삭제하다

return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
     return {
        result: dashboardDoc
     }
});

키쇼레 디야나:

요소 속성 리스트의 키를 포함한 모든 요소를 삭제하는 경우.

다음으로 mongoDB unset 연산자의 예를 나타냅니다.

db.UM_PREAUTH_CASE.update(
{ 'Id' : 123}, { $unset: { dataElements: ""} } )

JSON은 다음과 같습니다.

{ "Id":123,"dataElements" : [ { "createdBy" : "Kishore Babu Diyyana", "createdByUserId" : 2020 }, { "createdBy" : "Diyyana Kishore", "createdByUserId" : 2021 } ] }

언급URL : https://stackoverflow.com/questions/15641492/mongodb-remove-object-from-array

반응형