2011-11-16 66 views
0

我正在開發一個使用Codeigniter和Alex Bilbies MongoDB庫的Web應用程序。 每個用戶都得到一個文檔,其中包含一個名爲「電話」的項目,其中包含一組電話號碼。如何從選定的用戶文檔中將數據從數組中取出?MongoDB從所選文檔的數組中刪除項目

感謝您的幫助!

+0

蒙戈已經支持$拉出箱子: http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull – ioseb

+0

是的,但我可以拉一個特定的數組項嗎? –

回答

1

使用MongoDB的$拉從數組刪除特定數組項:

> db.mycollection.insert({user: "test", items: [1234, 5678, 91011]}); 
> db.mycollection.find() 
{ "_id" : ObjectId("4ec3b9af8d1ae67f1fb2b30a"), "user" : "test", "items" : [ 1234, 5678, 91011 ] } 
> db.mycollection.update({user: "test"}, {$pull: {items: 5678}}); 
> db.mycollection.find() 
{ "_id" : ObjectId("4ec3b9af8d1ae67f1fb2b30a"), "items" : [ 1234, 91011 ], "user" : "test" } 
+0

不錯。但是,我怎樣才能從一個特定的文件數組? –

+0

我需要使用Alex Bilbies MongoDB庫才能使用它。 –

+0

當然,使用修飾符操作符時,您不需要指定整個文檔,只需指定條件並指定需要修改的字段。在PHP方面,這看起來像:$ coll-> update(array('username'=>'jamesbond',array('$ pull'=> array('items'=> 5678))); – ioseb

2

即使我遇到了時,直接試圖拉使用亞歷Bilbies的MongoDB庫中的數組值的問題。 這種方法適用於我,首先取消設置值,然後拉出所有空值。

希望這有助於

$this->mongo_db->where('items', "5678")->unset_field('items.$')->update('mycollection'); 
$this->mongo_db->pull('items', NULL)->update('mycollection');