Ошибка Exception (MongoDB Exception) 'wrong type for field (pipeline) 3 != 4' -- Решение (вложенность)

Exception (MongoDB Exception) 'yii\mongodb\Exception' with message 'wrong type for field (pipeline) 3 != 4'

-- такая вот ошибка.

Причина и Решение

В моём случае причина оказалась в неправильной вложенности объектов -- в том, что при агрегации один из пунктов не было обёрнут в объект -- есть было так:

"1": {
			"$unwind": "$results"
		},
		"$match": {
			"$and": [{
				"results.pa": {
					"$in": ["MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7122)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7142)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7159)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7169)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7171)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a71d5)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a71d9)"]
				}
			}, {
				"results.po": {
					"$gte": 1
				}
			}]
		},

А надо так:

"1": {
			"$unwind": "$results"
		},
		{"$match": {
			"$and": [{
				"results.pa": {
					"$in": ["MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7122)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7142)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7159)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7169)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a7171)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a71d5)", "MongoDB\\BSON\\ObjectID(58ed00cd1e766679b85a71d9)"]
				}
			}, {
				"results.po": {
					"$gte": 1
				}
			}]
		}
}

То же самое на php (yii2)


На php
это выглядело так:

['$unwind' => '$results'],
					  
'$match' => [
		'$and' => [
			['results.pa' => ['$in' => $filterP]],
			['results.po' => ['$gte' => 1]]
		]
	],

А правильно так:

['$unwind' => '$results'],
					  
['$match' => [
		'$and' => [
			['results.pa' => ['$in' => $filterP]],
			['results.po' => ['$gte' => 1]] 
		]
	],
]

(то есть нужно было обернуть оператор match в объект)

Key Words for FKN + antitotal forum (CS VSU):