2016-10-21 7 views
0

質問の場合は次のとおりです。mongodb ORとANDで検索クエリ

if(($version[0] == 1)||($version[1] > 6)||($version[2]>=14 && $version[1] == 6)) 
{ 
    echo "true"; 
} 

ここで、このクエリをmongodbクエリに変換します。私は次のエントリを持っているMongoのコレクションで :私は次のクエリをしようとすると

{ 
    "main_version" : 0, 
    "sub_version" : 6, 
    "build_version" : 14, 
    "module" : "Co2", 
    "active" : 1 
} 

私はMongoのエラーを取得します。

$where = array('$or' => array(
       array('main_version'=> (int)$version[0]), 
       array('sub_version'=> array('$gt'=> (int)$version[1])), 
       array('$and' => array('build_version' => array('$gte'=> (int)$version[2])), 
            array('sub_version' => (int)$version[1]), 
        ), 
       array('active'=> 1), 
       ), 
       ); 

エラー:クエリを正規化することはできません:エラーBadValue、このクエリを解決するためにどのように誰を知っています「

を配列を必要ですか?

+0

どのようなプログラミング言語を使用していますか? – notionquest

+0

私は現在phpを使用しています –

+0

6年前のPHPでうまくいきましたが、$と演算子は配列のような配列の配列を受け入れるべきだと思います( '$ and' => array(array( 'build_version' => array( ' ( 'sub_version' =>(int)$ version [1])) 私は 'と'あなたがしているように配列を受け入れると思う 'または'opeartor、ここでは配列の代わりにクエリを渡しています。 –

答えて

1

まあは、6年前にPHPで働いていたが、私はあなたの$とオペレータは、クエリの配列を受け入れるべきだと思う、array('$and' => array(array('build_version' => array('$gte'=> (int)$version[2])), array('sub_version' => (int)$version[1]))

よう

何か「と」あなたは「または」opeartor行っているとして配列を受け入れますここでは配列の代わりにクエリを渡しています。

0

はい、余分な配列が解決策でした。 tx

関連する問題