Program Tip

MongoDB, 배열에서 객체 제거

programtip 2020. 11. 1. 18:33
반응형

MongoDB, 배열에서 객체 제거


문서:

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

배열에서 특정 개체를 가져 오는 방법이 있습니까? IE는 항목 배열에서 ID가 23 인 전체 항목 개체를 어떻게 가져옵니다.

나는 시도했다 :

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

그러나 나는 '풀'을 올바르게 사용하고 있지 않다고 확신합니다. 내가 이해하는 바에서 pull은 객체가 아닌 배열에서 필드를 가져옵니다.

전체 개체를 배열에서 꺼내는 방법에 대한 아이디어.

보너스로 나는 mongoose / nodejs에서 이것을 시도하고 있으며, 이런 유형의 것이 mongoose API에 있는지 확실하지 않지만 찾을 수 없습니다.


시험..

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

다음과 같은 문서가 있습니다.

여기에 이미지 설명 입력

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

인터넷에서 많이 검색 한 후 해결책을 찾았습니다.

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

        res.json(data);

      });

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

MY QUERY:->
db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}
OutPut:->
{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
       "data" : [ 
           {
               "id" : 1
           }, 
           {
               "id" : 2
           }
       ]
    }

사용 $pull데이터를 제거하는

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

시도해 볼 수도 있습니다.

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

참고 URL : https://stackoverflow.com/questions/15641492/mongodb-remove-object-from-array

반응형