我正在使用 PHP/Mongo 查询如下数据集:
{
description:
{
0:
{level: (some int 0-50)},
1:
{level: (some int 0-50)},
...
n:
{level: (some int 0-50)}
}
}
如何在 php 中编写函数,该函数将构建一个动态查询,使用 $or 并基于描述键的数量 (0 ... n) 搜索 40 级及以上?
我目前的手动查询不起作用(我感觉这是因为在某些条目中 description.1、2、3 不存在):
find("$or":{"description.0.level":[40,41,42,43,44,45,46,47,48,49,50],"description.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]}})
它给了我一个错误:
致命错误:未捕获的异常 'MongoCursorException' 带有消息 '$and/$or/$nor must be a nonempty array'
所以,我需要一个能够动态构建查询并工作的函数:)。