2011-11-16 64 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');