2011-11-16 6 views
0

私はCodeigniterとAlex Bilbies MongoDBライブラリを使ってWebアプリケーションを開発しています。 各ユーザーには、電話番号という配列を含む電話という項目が含まれているドキュメントがあります。選択したユーザーのドキュメントからアレイからアイテムを引き出すにはどうすればよいですか?MongoDBは選択された文書から配列から項目を削除します

ありがとうございました!

+0

はモンゴは$のサポートは箱から撤退しているのに役立ちます: http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull – ioseb

+0

うん、しかし、特定の配列項目をプルすることはできますか? –

答えて

1

配列から特定の配列項目を除去するためにMongoDB $プルを使用:直接アレックスBilbies 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

はさえ、私が問題に遭遇しました。 この方法は、最初に値を設定解除してから、すべてのNULLを取り出すという方法で動作します。

希望これは

$this->mongo_db->where('items', "5678")->unset_field('items.$')->update('mycollection'); 
$this->mongo_db->pull('items', NULL)->update('mycollection'); 
関連する問題