あなたは$or
の内側のキーの周りに括弧が欠落しています:
以下
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
を投げる持っているものです:私は、クエリmongolidこのrobomongoクエリを変換したい
$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);
その方法。
この素晴らしい情報をありがとう。あなたはただここで私を救った。 – KristCont
私はこの 'echo json_encode($ products、JSON_PRETTY_PRINT)'を試しましたが、 '{}'だけをエコーします。どういう考えがありますか? – KristCont
私が言いたいのは、結果ではなく「クエリ」だからです。だから '$ query = ['images' => ['$ size' => 0]]; echo json_encode($ query、JSON_PRETY_PRINT); $ products = Product :: where($ query); 'それはそれが世界に住んでいたことです。 –