我使用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'也必须是非空数组'
所以,我需要一个动态构建查询的函数,并且工作:).
该$or查询的价值本身就应该是一个数组.
{$or : [...]}
请参阅MongoDB文档中的标准示例.
你可能也想使用运营商,如$in(或$lt和$gt组合)来选择你是哪个级别的描述感兴趣的,而不是列举的每个值.