PHP - Mongo - $或

Jam*_*one 3 php mongodb

我使用PHP/Mongo查询如下数据集:

{
  description:
  {
    0:
      {level: (some int 0-50)},
    1:
      {level: (some int 0-50)},

  ...

    n:
      {level: (some int 0-50)}
   }
 }
Run Code Online (Sandbox Code Playgroud)

我如何在php中编写一个函数,它将使用$或基于描述键的数量(0 ... n)构建一个搜索40级及以上级别的动态查询?

我目前用于手动查询的工作不起作用(我感觉这是因为在某些条目描述中,1,2,3不存在):

find("$or":{"description.0.level":[40,41,42,43,44,45,46,47,48,49,50],"descriptio??n.1.level":[40,41,42,43,44,45,46,47,48,49,50],"description.2.level":[40,41,42,43,??44,45,46,47,48,49,50],"description.3.level":[40,41,42,43,44,45,46,47,48,49,50]}})
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误:

致命错误:带有消息'$和/ $或/ $的未捕获异常'MongoCursorException'也必须是非空数组'

所以,我需要一个动态构建查询的函数,并且工作:).

ste*_*tew 6

$or查询的价值本身就应该是一个数组. {$or : [...]}

请参阅MongoDB文档中的标准示例.

你可能也想使用运营商,如$in(或$lt$gt组合)来选择你是哪个级别的描述感兴趣的,而不是列举的每个值.