Неопределенный индекс: mongodb foreach php - PullRequest
0 голосов
/ 31 мая 2018

Я тестирую mongodb с помощью php и столкнулся с проблемой, которую я не знаю, как решить, это код, который я сейчас использую.

<?php

require ($_SERVER['DOCUMENT_ROOT'] . '/grafic/mongodb_php/vendor/autoload.php'); 

$client = new MongoDB\Client;
$snrdb = $client->snrdb;
$nodos_live = $snrdb->nodos_live;

$filter  = [];
$options = ['sort' => ['_id' => 1], 'limit' => 1];

$show = $nodos_live->find($filter, $options);

foreach ($show as $collection) {
    $snr_1= $collection["n1_snr_1"];
    $snr_2= $collection["n1_snr_2"];
}

echo $snr_1 ." ";
echo $snr_2;

?>

это даетme

28,9 28,3

теперь, если я изменю идентификатор и имя коллекции на 2 и n2_snr_ * вот так.

<?php

require ($_SERVER['DOCUMENT_ROOT'] . '/grafic/mongodb_php/vendor/autoload.php'); 

$client = new MongoDB\Client;
$snrdb = $client->snrdb;
$nodos_live = $snrdb->nodos_live;

$filter  = [];
$options = ['sort' => ['_id' => 2], 'limit' => 1];

$show = $nodos_live->find($filter, $options);

foreach ($show as $collection) {
    $snr_1= $collection["n2_snr_1"];
    $snr_2= $collection["n2_snr_2"];
}

echo $snr_1 ." ";
echo $snr_2;

?>

это дает мне сообщение об ошибке:

Неустранимая ошибка : Uncaught MongoDB \ Driver \ Exception \ ConnectionException: неверная спецификация сортировки в C: \ xampp \ htdocs \ grafic \ mongodb_php \ vendor \ mongodb \ mongodb \ src \ Operation \ OperationFind.php: 287 Трассировка стека: # 0 C: \ xampp \ htdocs \ grafic \ mongodb_php \ vendor \ mongodb \ mongodb \ src \ Operation \ Find.php (287): MongoDB \ Driver \ Server-> executeQuery ('snrdb.nodos_liv ... ', Object (MongoDB \ Driver \ Query), Array) # 1 C: \ xampp \ htdocs \ grafic \ mongodb_php \ vendor \ mongodb \ mongodb \ src \ Collection.php (531): MongoDB \ Operation \ Find-> execute (Object (MongoDB \ Driver \ Server)) # 2 C: \ xampp \ htdocs \ grafic \ test \ test.php (23): MongoDB \ Collection-> find (Array, Array) # 3 {main} брошенов C: \ xampp \ htdocs \ grafic \ mongodb_php \ vendor \ mongodb \ mongodb \ src \ Operation \ Find.php on line 287

И я не могу понять, почему я получаю сообщение об ошибке кому-нибудь, кто может мне помочь с этим?

Если сделать дамп, как это так

<?php 

require ($_SERVER['DOCUMENT_ROOT'] . '/grafic/mongodb_php/vendor/autoload.php'); 

$client = new MongoDB\Client;
$snrdb = $client->snrdb;
$nodos_live = $snrdb->nodos_live;

$show = $nodos_live->findOne(
    ['_id' => '1']
);

var_dump($show)

?>

Я получаю это, показывая, что это документ с идентификатором 1

object(MongoDB\Model\BSONDocument)#19 (1) {
  ["storage":"ArrayObject":private]=>
  array(5) {
    ["_id"]=>
    string(1) "1"
    ["n1_snr_1"]=>
    float(28.9)
    ["n1_snr_2"]=>
    float(28.3)
    ["n1_snr_3"]=>
    string(1) "0"
    ["time_stamp"]=>
    string(19) "2018-05-31 21:44:22"
  }
}

И то же самое, что я делаюдамп _id => 2 показывает, что он также существует.

object(MongoDB\Model\BSONDocument)#19 (1) {
  ["storage":"ArrayObject":private]=>
  array(5) {
    ["_id"]=>
    string(1) "2"
    ["n2_snr_1"]=>
    float(31.7)
    ["n2_snr_2"]=>
    float(35.7)
    ["n2_snr_3"]=>
    string(1) "0"
    ["time_stamp"]=>
    string(19) "2018-05-31 21:44:22"
  }
}

1 Ответ

0 голосов
/ 31 мая 2018

sort может принимать только два значения 1 для возрастания и -1 для убывания.Если вы хотите запросить документы с помощью _id=2, вы должны указать это в запросе, а не в критериях сортировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...