yii2 mongodb - как найти элемент в подмассиве коллекции - PullRequest
0 голосов
/ 31 января 2019

Массив из коллекции выглядит следующим образом.

$result = $collection->find();

Array
(
[0] => Array
    (
        [_id] => MongoDB\BSON\ObjectId Object
            (
                [oid] => 5c52b90454851c44aa2987e2
            )

        [name] => Array
            (
                [date] => 2019-01-31 10:59:48
                [value] => DESKTOP-TODTF5E
            )

        [network_addresses] => Array
            (
                [0] => Array
                    (
                        [ip_1] => 12.21.134
                        [ip_2] => 50
                        [mac] => xx:xx:xx:xx:xx:xx
                    )

                [1] => Array
                    (
                        [ip_1] => 192.168.0
                        [ip_2] => 2
                        [mac] => yy:yy:yy:yy:yy:yy
                    )

            )
     )

)        

Я могу найти, существует ли какой-нибудь mac в определенной строке подмассива, например:

$result = $collection->find(["network_addresses.0.mac" => 
"xx:xx:xx:xx:xx:xx"]);

Но мне нужно проверить,определенный mac существует в любой строке подмассива, поэтому вместо индекса строки 0 мне нужно поставить звездочку или что-то в этом роде.Как это сделать ?

1 Ответ

0 голосов
/ 01 февраля 2019
$query = (new Query)->select(["name"])
         ->from(['db_name','collection_name'])
         ->where(["network_addresses" => [ '$elemMatch' =>['mac' => "xx:xx:xx:xx:xx:xx"]]]);

$results = $query->all();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...