2016-04-20 15 views
1

私は初心者ですので、忍耐強くしてください。

$products = Product::where([ 
          'images' => [ '$size' => 0 ], 
          '$or' => [ 
             'inventory.a' => ['$gt' => 0], 
             'inventory.b' => ['$gt' => 0] 
            ] 
          ]); 

答えて

2

あなたは$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); 

その方法。

+0

この素晴らしい情報をありがとう。あなたはただここで私を救った。 – KristCont

+0

私はこの 'echo json_encode($ products、JSON_PRETTY_PRINT)'を試しましたが、 '{}'だけをエコーし​​ます。どういう考えがありますか? – KristCont

+1

私が言いたいのは、結果ではなく「クエリ」だからです。だから '$ query = ['images' => ['$ size' => 0]]; echo json_encode($ query、JSON_PRETY_PRINT); $ products = Product :: where($ query); 'それはそれが世界に住んでいたことです。 –

関連する問題