Ошибка 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
- 2749 reads