我是新手所以请耐心等待。我想将此robomongo查询转换为mongolid查询:
db.getCollection('products').find({'images':{$size:0},
$or:[
{'inventory.a':{'$gt':0}},
{'inventory.b':{'$gt':0}}
]
})
以下是我现在发出的错误Can't canonicalize query: BadValue $or needs an array
:
$products = Product::where([
'images' => [ '$size' => 0 ],
'$or' => [
'inventory.a' => ['$gt' => 0],
'inventory.b' => ['$gt' => 0]
]
]);
答案 0 :(得分:2)
$or
的内键周围缺少括号:
$products = Product::where([
'images' => [ '$size' => 0 ],
'$or' => [
[ 'inventory.a' => ['$gt' => 0] ],
[ 'inventory.b' => ['$gt' => 0] ]
]
]);
MongoDB表示法是“对象”的“列表”,而不是您标注的“具有多个键的单个对象”。
与JSON比较时,您应该转储JSON编码以检查:
echo json_encode($query, JSON_PRETTY_PRINT);
通过这种方式,您可以发现表示结构的差异。