2013-01-22 2 views
0

Je suis en train d'utiliser Codeigniter avec codeigniter-mongodb-library/tree/v2 afin de se connecter avec des documents mongo et mise à jour avec cette structure:MongoDB documents erreur de mise à jour avec Codeigniter: Mod sur _id pas permis

{ 
"_id" : ObjectId("50fd8bd460e958aa38000002"), 
"created_at" : 1358793684, 
"updated_at" : 1358793684, 
"is_active" : 0, 
"memberships" : [ 
    { 
    } 
], 
"first_models" : [ 
    [ ] 
], 
"second_models" : [ 
    [ ] 
], 
"pages" : [ 
    [ ] 
] 
} 

Tout ce que je veux est mise à jour quelques-uns document par il est donné _id. Particulièrement Je dois ajouter des éléments à l'intérieur du tableau "first_models". De mon modèle Codeigniter J'appelle ceci:

$result = $this->mongo_db 
->push(array('_id' => '50fd8bd460e958aa38000002'),array('first_models' => array('Some text here'))) 
->update($this->collections['sites']); 

Je reçois cette erreur lorsque je tente de mettre à jour un document spécifique:

Mod on _id not allowed 

semble qu'il y ait un conflit avec le _id donné .. Il me manque quelque chose et je ne sais pas quoi :( J'utilise Mongodb 2.2.2 avec Codeigniter 2.1.3, PHP5.4 et Apache2

Répondre

0

J'allais dans la mauvaise direction avec ça. @Rajan me montre la bonne solution:

$updated = $this->mongo_db->where('_id', new MongoId($id)) 
->set($data) 
->update('mycollection'); 

Vous pouvez voir, en utilisant à la place setpush, et faisant référence id objet avec new MongoId($id) :-)

Questions connexes