簡體   English   中英

使用 PHP 獲取 MongoDB 中“對象數組”字段條件的文檔

[英]Fetch documents with condition on “array of objects” field in MongoDB with PHP

我看到了其他類似的查詢數組字段的問題,但其中大多數是針對純 Mongo 的,我無法將解決方案轉換為 PHP 的驅動程序“find()”。

在這里也發現了一個類似的問題,但我無法用它來解決我的問題。

PHP 驅動程序的文檔也沒有幫助,find() 有一個示例,但字段不像我的那樣是 arrays。

給我帶來麻煩的字段是“Sentenca”,它是一個包含“Situacao”和“Prob”的數組。 如下所示:

"Sentenca": [{
        "Situacao": "nc",
        "Prob": 0.96
        }]

在此處輸入圖像描述

“Sentenca”始終只包含一個索引 [0] 與這兩個字段。

我需要查詢“Situacao”不是“nc”的所有文檔。 我所知道的是我應該使用操作符 $nin,但我不知道如何使用 find() 來做到這一點。

我得到的最遠的是這個(這個查詢沒有做我需要的):

$result = $collection->find( [ "Sentenca"=>["Situacao"=>['$nin'=>["nc"]]]] );

編輯:我設法為“Situacao”應用 $nin 條件進行查詢,但由於某種原因,此查詢不返回任何內容。 如果我嘗試回顯條目,則會收到錯誤消息:

Uncaught MongoDB\Driver\Exception\LogicException: Cursors cannot yield multiple iterators

MongoDB 論壇上有人解決了這個問題。 您可以使用 '。' 訪問數組元素,然后使用 $nin => 'nc'。

$result = $collection->find([

    "Sentenca.0.Situacao" => [
        '$nin' => ["nc"]
    ]
    
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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