簡體   English   中英

PHP中的MongoDB查詢:為什么要使用$ and?

[英]MongoDB query in PHP: why use $and?

我是第一次學習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']]]);

這兩個查詢似乎都有效。 承認我的數據集很小,兩個查詢在大約同一時間返回正確的結果。 我不確定我是否缺少區別,或者這些語句是否實際上等效? 最佳做法是什么?

在您的情況下,它們是等效的。 $and在頂層。 有關應使用該示例的示例,請參閱文檔: http : //docs.mongodb.org/manual/reference/operator/query/and

之間存在細微的差別$and,分隔的字段列表。 MongoDB在所有由,分隔的字段之間提供隱式和。 當您要在查詢中多次訪問同一字段時$and將使用顯式$and

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM