Ошибка Exception (MongoDB Exception) 'wrong type for field (pipeline) 3 != 4' -- Решение (вложенность)
Primary tabs
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 в объект)
- Log in to post comments
- 2159 reads