0
我試圖使用Doctrine ODM與我的mongo數據庫進行交互,並且我試圖使用這個在MongoDB CLI中沒有問題的情況下運行的mongo查詢:Doctrine ODM:添加操作符不接受作爲操作數的對象
db.products.aggregate(
[
{
$match: {highEndEmployees: {$lt: 2001 }, lowEndEmployees: {$gt: 1400} }
},
{
$project: {
lowEndFinalPrice: {
$add: [
{ $multiply: ["$priceMultiplierUser", "$lowEndUsers"] },
{ $multiply: ["$priceMultiplierEmployee", "$lowEndEmployees"] },
{ $multiply: ["$priceMultiplierJobOpenings", "$lowEndJobOpenings"] },
"$priceBase"
]
},
pricePerUser: {$multiply: ["$priceMultiplierUser", "$lowEndUsers"]},
pricePerEmployee: {$multiply: ["$priceMultiplierEmployee", "$lowEndEmployees"]},
pricePerJobOpening: {$multiply: ["$priceMultiplierJobOpenings", "$lowEndJobOpenings"]},
}
},
{
$sort: { lowEndFinalPrice: 1 }
}
]);
教義ODM,該查詢翻譯成:
array(
"aggregate" => "products",
"pipeline" => array(
array('$match' =>
array(
"highEndEmployees" => array('$lt' => 2001),
"lowEndEmployees" => array('$gt'=> 1400)
)
),
array('$project' => array(
'lowEndFinalPrice' => array(
'$add' => '$priceBase',
'$add' => array(
'$multiply' => array('$priceMultiplierUser', '$lowEndUsers')
)
)
))
)
)
);
但是,如果我嘗試運行查詢,我得到以下錯誤:
exception: the $add operator does not accept an object as an operand
但是,如果我刪除此行:
'$add' => array(
'$multiply' => array('$priceMultiplierUser', '$lowEndUsers')
)
從陣列中,查詢運行非常好。所以我使用的是mongo在我嘗試嵌入$add
密鑰中的另一個數組時遇到的抱怨。
在PHP + Doctrine ODM中編寫上述查詢的正確方法是什麼?