[英]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.