2013-03-26 37 views
52

Đốc:MongoDB, loại bỏ đối tượng từ mảng

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

Có cách nào để kéo một đối tượng cụ thể từ một mảng? I E. làm thế nào để kéo toàn bộ đối tượng mục có id 23 từ mảng mục.

Tôi đã thử:

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

Tuy nhiên tôi khá chắc chắn rằng tôi không sử dụng 'kéo' một cách chính xác. Từ những gì tôi hiểu kéo sẽ kéo một lĩnh vực từ một mảng nhưng không phải là một đối tượng.

Bất kỳ ý tưởng nào về cách kéo toàn bộ đối tượng ra khỏi mảng.

Là tiền thưởng tôi đang cố gắng thực hiện điều này trong mongoose/nodejs, cũng như không chắc chắn nếu loại điều này là trong mongoose API nhưng tôi không thể tìm thấy nó.

+1

bạn đã thử này? http://stackoverflow.com/questions/9048424/removing-specific-items-from-array-with-mongodb –

+0

yup. Cảm ơn! – lostintranslation

Trả lời

83

thử ..

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

yup, cú pháp của tôi sai. Cảm ơn! Cũng cố gắng mà không có sự khó chịu và đa tùy chọn và cũng làm việc tốt. – lostintranslation

+0

THANK YOU @sambomartin –

+5

Giá trị boolean là gì? –

7

Tôi có một tài liệu như

enter image description here

tôi phải xóa địa chỉ từ mảng địa chỉ

Sau khi tìm kiếm rất nhiều trên internet tôi tìm thấy giải pháp

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

     res.json(data); 

     }); 
+0

Cách này hoạt động? điều này có thể được thực hiện trong PHP @Deepak – RussellHarrower

4
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 
      } 
     ] 
    } 
0

sử dụng $ kéo để loại bỏ các dữ liệu

return this.mobiledashboardModel 
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}}) 
.exec() 
.then(dashboardDoc => { 
    return { 
     result: dashboardDoc 
    } 
}); 
Các vấn đề liên quan