2010-07-08 8 views
0

Je l'objet suivant stocké dans un MongoDB:MongoDB - aider à une requête PHP

[_id] => MongoId Object (
) 
[horses] => Array (
    [0] => Array (
     [name] => Youve Been Mowed 
     [selectionId] => 3004097 
    ) 
    [1] => Array (
     [name] => Rascal In The Mix 
     [selectionId] => 3460932 
    ) 
    [2] => Array (
     [name] => Clumber Place 
     [selectionId] => 2986884 
    ) 
    [3] => Array (
     [name] => Pretty Orchid 
     [selectionId] => 2581717 
    ) 
    [4] => Array (
     [name] => Astrodonna 
     [selectionId] => 2568095 
    ) 
    [5] => Array (
     [name] => Just Sam 
     [selectionId] => 2511403 
    ) 
    [6] => Array (
     [name] => Many Welcomes 
     [selectionId] => 2866423 
    ) 
    [7] => Array (
     [name] => Two Turtle Doves 
     [selectionId] => 3857873 
    ) 
    [8] => Array (
     [name] => Piquante 
     [selectionId] => 3372813 
    ) 
    [9] => Array (
     [name] => Nimmys Special 
     [selectionId] => 3066557 
    ) 
) 
[marketId] => 101531031 
[marketName] => 7f Hcap 

Maintenant, je veux ajouter un nouveau champ:

[_id] => MongoId Object (
) 
[horses] => Array (
    [0] => Array (
     [name] => Youve Been Mowed 
     [selectionId] => 3004097 
     [odds] => Array(
      10000000 => 1.5 
      10000020 => 1.6 
      10000030 => 1.7 
     ) 
    ) 
    ... 
    etc. 
    ... 

Le 100000XX est un horodatage et la 1.X sont les chances

Je suis vraiment frapper ma tête du bureau ici. Toutes les suggestions très appréciées.

Voici ce que j'ai sofar (mal):

foreach($horses as &$horse) 
{ 
    $newdata=array('$set'=>array($horse['odds']=>$price)); 
    $filter=array("marketId"=>$marketId); 
    $c->update($filter,$newdata); 
} 

Répondre

0

Merci beaucoup pour votre réponse. Êtes-vous le Kristina du module MongoDB Perl sur CPAN? :)

Voici mon code de travail:

 $data_object=null; 
     for($i=0;$i<sizeof($horses);$i++) 
     { 
       $data_object->timestamp=$time; 
       $data_object->niceTime=date("c"); 
       $data_object->price=$price; 

       $this_horse=$horses[$i]; 
       if($this_horse['selectionId']==$horseId) 
       { 
         $newdata=array('$push'=>array("horses.$i.odds"=>$data_object)); 
         $filter=array(); 
         $options=array('upsert'=>true); 
         $c->update($filter,$newdata,$options); 
       } 
     } 
+0

Oui, je suis le même Kristina. – kristina