2014-07-04 126 views
1

内我有以下蒙戈结构:蒙戈:删除从数组元素的数组

{ 
"_id": 123, 
"rooms": [ 
    { 
     "room_code": 456, 
     "img": [ 
      { 
       "link": "blah", 
       "title": "Title" 
      }, 
      { 
       "link": "blah2", 
       "title": "Title2" 
      } 
     ] 
    }, 
    { 
     "room_code": 789, 
     "img": [ 
      { 
       "link": "blah", 
       "title": "Title" 
      }, 
      { 
       "link": "blah3", 
       "title": "Title3" 
      } 
     ] 
    } 
] 
} 

现在,我想从“rooms.img”键,其中"link":"blah"除去这些元素。就像这样:

{ 
"_id": 123, 
"rooms": [ 
    { 
     "room_code": 456, 
     "img": [ 
      { 
       "link": "blah2", 
       "title": "Title2" 
      } 
     ] 
    }, 
    { 
     "room_code": 789, 
     "img": [ 
      { 
       "link": "blah3", 
       "title": "Title3" 
      } 
     ] 
    } 
] 
} 

我尝试使用,

db.collections.update({"_id":123},{$pull: { 'rooms':{'img': { 'l': 'blah' } }}}) 

db.collections.update({"_id":123},{$pull: { 'room_info.img': { 'l': 'blah' } }}) 

但两者都没有工作。如何从列表中删除元素(“img”),它是另一个列表(“房间”)的一部分?请指教。

+0

'$ elemMatch'可能有助于在这里。 –

回答

0

你应该在原来的岗位使用投影opperator Doc

另外的样子:Here