Неопределенный метод MongoCollection :: command () при попытке получить уникальные записи из БД - PullRequest
1 голос
/ 03 апреля 2012

При попытке получить уникальные записи из MongoDB, с которой я работаю, появляется следующая ошибка Fatal error: Call to undefined method MongoCollection::command() in /home/cr47/public_html/methods.php on line 67.

У меня есть код, в котором перечислены все мои записи правильно, но я не хочу перечислять дубликаты.Таким образом, я изменил свою функцию списка записей из этого (работает, но перечисляет «Butter» 20 раз вместо одного):

public function listRecords($query = null){
    $this->find($query);

    foreach($this->cursor as $record) {
        $ing = $record['Shrt_Desc'];

        echo '<a href="find.php?Shrt_Desc=' . $ing .'"> ' . $ing . ' </a> </br>';

    }
}

Я изменил вышеупомянутую функцию (в попытке сделать список «Butter» только один раз):

public function listRecords($query = null){
    $this->find($query);
    foreach($this->cursor as $record) {
        //$ing = $record['Shrt_Desc'];
        $ing = $this->command(array("distinct" => "record", "key" => "Shrt_Desc"));
        echo '<a href="find.php?Shrt_Desc=' . $ing .'"> ' . $ing . ' </a> </br>';
    }
}

Вот страница distinct.php, где я создаю экземпляры своих классов и вызываю свои функции:

        include ("methods.php");
        $csvCommands = new csvCommands();
        $csvCommands->listRecords();

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Я думаю, что проблема в том, что вы вызываете $this->find($query), вы уверены, что у вас есть метод с именем find или вы пытаетесь вызвать метод поиска MongoDB, это должно быть что-то вроде $this->db->find или $this->mongoDB->find

Я думаю, что лучше загрузить свой полный вызов, чтобы мы могли лучше рассмотреть его, если у вас все еще есть проблемы

Редактировать 1

Заменить

$this->command

С

$this->connection->command

Спасибо

:)

0 голосов
/ 30 января 2017

Я только что попробовал как часть обучения MongoDB ... Это работает .. Ниже моих мыслей

$client = new MongoClient();

if($client){

/*echo "connection successufull";*/
$dbs=$client->school;
$studentcol=$dbs->students;
$lowest=[];
$scores=$studentcol->find();
foreach($scores as $score)
{
    $id=$score["_id"];
    $scoreslist=$score["scores"];
    var_dump($scoreslist)."</br>";
    $updated_sco=setnew_scores($scoreslist);
    echo "</br>";
    var_dump($updated_sco)."</br>";
    $update=update_score($studentcol,$id,$updated_sco);
    echo "old score list =>" .$scoreslist. " new score list is ".$updated_sco;

}
}

else
echo "connection un successfull";
?>
<?php
function setnew_scores($score)
{
    $counts=count($score);
    $counts;
    for ($i=0;$i<$counts;$i++)
    {
        if($score[$i]["type"] == "homework")
        {
            $lowest[$i]=$score[$i]["score"];    
        }

    }
    $lower = min($lowest);
    $j=0;
    for($i=0;$i<$counts;$i++)
    {   

        /*echo "</br> Type: ".$score[$i]["type"]."</br>";
        echo "</br> Scores: ".$score[$i]["score"]."</br>";
        echo "lower: ".$lower."</br>";*/
        if($score[$i]["score"] !=$lower ||  $score[$i]["type"]!=="homework")
        {
            $updated_scores[$j]["type"]=$score[$i]["type"];
            //echo $updated_scores[$j]["type"];
            $updated_scores[$j]["score"]=$score[$i]["score"];
            $j++;
        }
    }
    echo "</br>";   
    //print_r( $updated_scores)."</br>";
    return $updated_scores;
}
function update_score($scores,$id,$newscore)
{
    //print_r($newscore);/* its an array content*/
/*i tried the below type also its also works fine*/
    /*$newss="";
    for($i=0;$i<count($newscore);$i++)
    {
        $newss.="[\"".$newscore[$i]["type"]."\":".$newscore[$i]["score"]."]";
    }
    //echo $newss;
    //echo "</br>update([\"_id\":".$id."],['\$set'=>['scores' => ".$newss."]])";*/
    try{

        //$scores->update(["_id"=>$id],['$set'=>['scores' => $newss]]);
        $scores->update(["_id"=>$id],['$set'=>['scores' => $newscore]]);
    }
    catch(Exception $e){
        echo $e->get_Message();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...