问题描述
我看到了其他类似的问题来查询数组字段,但是其中大多数是纯Mongo的问题,我无法将解决方案转换为PHP的驱动程序'find()'。
我也找到了类似的问题here,但是我无法用它来解决我的问题。
PHP driver's documentation也无济于事,有一个find()的例子,但字段不是我的数组。
引起我麻烦的字段是“ Sentenca”,它是一个包含“ Situacao”和“ Prob”的数组。如下所示:
"Sentenca": [{
"Situacao": "nc","Prob": 0.96
}]
“ Sentenca”始终仅包含带有这两个字段的一个索引[0]。
我需要查询“ Situacao”不是“ nc”的所有文档。我所知道的是,我应该使用操作符$ nin,但是我不知道如何使用find()来完成该操作。
我得到的最远的是这个(这个查询没有满足我的需要):
$result = $collection->find( [ "Sentenca"=>["Situacao"=>['$nin'=>["nc"]]]] );
编辑:我设法使用$ Sinacao的$ nin条件进行查询,但由于某种原因,该查询未返回任何内容。如果我尝试回显条目,则会收到错误消息:
Uncaught MongoDB\Driver\Exception\LogicException: Cursors cannot yield multiple iterators
解决方法
MongoDB论坛上的某人解决了该问题。您可以使用 '。'访问数组元素,然后使用$ nin =>'nc'。
$result = $collection->find([
"Sentenca.0.Situacao" => [
'$nin' => ["nc"]
]
]);