[英]PHP - Mongo - $or
我使用PHP / Mongo查詢如下數據集:
{
description:
{
0:
{level: (some int 0-50)},
1:
{level: (some int 0-50)},
...
n:
{level: (some int 0-50)}
}
}
我如何在php中編寫一個函數,它將使用$或基於描述鍵的數量(0 ... n)構建一個搜索40級及以上級別的動態查詢?
我目前用於手動查詢的工作不起作用(我感覺這是因為在某些條目描述中,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'也必須是非空數組'
所以,我需要一個動態構建查詢的函數,並且工作:)。
$or
查詢的值本身應該是一個數組。 {$or : [...]}
請參閱MongoDB文檔中的標准示例。
您可能還希望使用諸如$in
(或$lt
和$gt
組合)之類的運算符來選擇您感興趣的描述級別,而不是枚舉每個值。
對於那些感興趣的人,這是我對這個問題的最終代碼(作品)。
$y = 0;
$descriptionLevels = 10; // set to 'n' levels as needed ...
while($y < $descriptionLevels){
$filter['$or'][]['description.' . $y . '.level']['$in'] = range($startLevel, $endLevel);
$y++;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.