2

mongodbおよび/またはcombophpを使用していて、[MongoCursorException]を取得していることを除いてこれと同様です。$または配列にはオブジェクトが含まれている必要があります。

こちらもお読みくださいhttp://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or

PHPを介してMongoDBの「OR」内に「AND」をネストするにはどうすればよいですか? これが私の条件引数です(var_export経由):

'group_id' => '4eec13b5-aeb4-48ee-9619-449125af0e18',
'$or' => 
array (
  0 => 
  array (
    0 => 
    array (
      'active' => 0,
      'user_id' => '4eea7b76-5d34-4036-8344-120c0aaa1bdc',
    ),
  ),
  1 => 
  array (
    1 => 
    array (
      'active' => 1,
    ),
  ),
)

グループIDにあり、アクティブなOR(ユーザーに属し、アクティブではない)の投稿のリストが必要です。

SQLでは非常に簡単ですが、PHPクエリを介してMongoDBで試してみると、$またはエラーが発生します。これは可能ですか?$ andは必要ですか?

4

1 に答える 1

5

あなたのクエリは間違っています。JSON では、次のようになります。

{ 
   "group_id" : "4eec13b5-aeb4-48ee-9619-449125af0e18",
   "$or" : [ 
                    [ { "active" : 0, "user_id" : "4eea7b76-5d34-4036-8344-120c0aaa1bdc" } ],
                    [ null, { "active" : 1 } ] 
           ]
}   

グループ ID AND がアクティブ OR (ユーザーに属し AND アクティブでない) の場合、次のように表す必要があります。

{ 
   "group_id" : "4eec13b5-aeb4-48ee-9619-449125af0e18",
   "$or" : [ 
                    { "active" : 0, "user_id" : "4eea7b76-5d34-4036-8344-120c0aaa1bdc" },
                    { "active" : 1 } 
           ]
}   

多かれ少なかれ、PHPでは次のようになります

array(
'group_id' => '4eec13b5-aeb4-48ee-9619-449125af0e18',
'$or' => 
     array (
        0 => 
           array (
               'active' => 0,
               'user_id' => '4eea7b76-5d34-4036-8344-120c0aaa1bdc',
           ),
        1 => 
           array (
               'active' => 1,
           )
     ),
)
于 2011-12-30T05:25:50.963 に答える