2012-12-25 49 views
1

以下是這樣的mongodb內容:如何刪除mogodb中的json元素?

{ 
"_id": 74924, 
"bangs": { 
    "436": { 
     "join_time": 1345624851, 
     "status": 1, 
     "scores": 0 
    }, 
    "446": { 
     "join_time": 1355727257, 
     "status": 1, 
     "scores": 0 
    } 
}, 
"_id": 74926, 
"bangs": { 
    "436": { 
     "join_time": 1345624851, 
     "status": 1, 
     "scores": 0 
    }, 
    "446": { 
     "join_time": 1355727257, 
     "status": 1, 
     "scores": 0 
    } 
} 
} 

我想刪除:

"436": { 
     "join_time": 1345624851, 
     "status": 1, 
     "scores": 0 
    }, 
where _id=74924 

結果將是:

{ 
"_id": 74924, 
"bangs": { 
    "446": { 
     "join_time": 1355727257, 
     "status": 1, 
     "scores": 0 
    } 
}, 
"_id": 74926, 
"bangs": { 
    "436": { 
     "join_time": 1345624851, 
     "status": 1, 
     "scores": 0 
    }, 
    "446": { 
     "join_time": 1355727257, 
     "status": 1, 
     "scores": 0 
    } 
} 
} 

我寫了這樣的代碼:

$mongo->users->users->update(array('_id'=>74924), array('$pull'=>array('bangs'=>436))); 

但是該記錄沒有刪除

我該如何編寫代碼?
在此先感謝!

+3

請[閱讀這一重要職務(http://meta.stackexchange.com/a/5235/135887)關於可能影響你的能力有問題得到很好的答案。 – Charles

回答

1

你可以用這個刪除它:

db.test.update({ _id:74924 }, { $unset: {"bangs.436":1} }) 

// I think this can be written in php like this: 
$mongo->users->users->update(array('_id'=>74924), array('$unset'=>array('bangs.436'=>1)));