Я изучаю MongoDB в первый раз и немного запутался в написании запросов с несколькими аргументами.
Учитывая следующую коллекцию временную
$col = (new MongoClient())->selectDB('tmpDB')->selectCollection('tmpCol');
$colors = ['red', 'blue', 'green', 'yellow', 'pink', 'orange', 'purple', 'gray'];
$objects = ['lamps', 'flowers', 'balloons', 'french horns', 'gables', 'slips', 'flamingos', 'streets'];
for ($i=0; $i < 100; ++$i) {
$collection->insert([
'count' => mt_rand(1, 99),
'color' => $colors[mt_rand(0, count($colors)-1)],
'object' => $objects[mt_rand(0, count($objects)-1)],
]);
}
Я хочу написать запрос, который будет найти все документы с красными воздушными шарами. Я перечитал основные документы MongoDB и придумать двух запросов:
$col->count(['color' => 'red', 'object' => 'balloons']);
или
$col->count(['$and' => [['color' => 'red'], ['object' => 'balloons']]]);
Оба запроса, кажется, работают. Признавая, что мой набор данных довольно мал, оба запроса возвращают правильный результат примерно в одно и то же время. Я не уверен, есть ли разница, которой я не хватает, или если эти утверждения фактически эквивалентны? Какова наилучшая практика?
Это имеет смысл. Спасибо. Если вы хотите добавить это как ответ, я могу отметить его принятым. –