使用 PHP 获取 MongoDB 中“对象数组”字段条件的文档

我看到了其他类似的查询数组字段的问题,但大多数都是针对纯 Mongo 的,我无法将解决方案转换为 PHP 的驱动程序“find()”。

我在这里也发现了类似的问题,但我无法用它来解决我的问题。

PHP驱动程序的文档也没有帮助,有一个 find() 示例,但字段不是像我的那样的数组。

给我带来麻烦的字段是“Sentenca”,它是一个包含“Situacao”和“Prob”的数组。就像下面这样:

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

https://img1.sycdn.imooc.com/652b8c380001b70e01690083.jpg

“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



哔哔one
浏览 85回答 1
1回答

扬帆大鱼

MongoDB 论坛上有人解决了这个问题。您可以使用 '。' 要访问数组元素,请使用 $nin => 'nc'。$result = $collection->find([    "Sentenca.0.Situacao" => [        '$nin' => ["nc"]    ]    ]);
打开App,查看更多内容
随时随地看视频慕课网APP