簡體   English   中英

PHP - Mongo - $或

[英]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],"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]}})

它給了我一個錯誤:

致命錯誤:帶有消息'$和/ $或/ $的未捕獲異常'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM