[英]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.