MongoDB和PHP点表示法问题

时间:2019-04-14 00:02:20

标签: php mongodb

我在MongoDB数据库中设置了一个对象数组,并在设置返回字段的同时使用带点表示法的findOne查询。在php中,它似乎将返回整个文档,而不是第一个匹配的对象数组。我不太确定这是一个错误还是我的代码。我正在使用PHP 7.1和最新版本的MongoDB。

使用shell脚本时,它返回匹配我的请求的第一个对象数组,但是使用PHP时,即使我指定了要返回的字段,它也会返回完整的文档。

我尝试使用 $ elemMatch 来查看是否可行,但是PHP输出的结果与点表示法相同。

MongoDB集合

"_id" : "my unique id",
accounts : [
 {
    "userid" : "benton",
    "active" : true
 },
 {
    "userid" : "givens",
    "active" : false
 }
]

PHP

$Result = $DBConnection->findOne(array('accounts.userid' => 'benton'), array('accounts.$' => 1));

Shell脚本

db.collection.findOne({"accounts.userid" : "benton"},{"accounts.$" : : 1})

使用MongoDB shell时,我得到所需的输出是

"_id" : "my unique id",
accounts : [
 {
    "userid" : "benton",
    "active" : true
 }
]

当我使用PHP时,我会按如下方式获得完整文档

"_id" : "my unique id",
accounts : [
 {
    "userid" : "benton",
    "active" : true
 },
 {
    "userid" : "givens",
    "active" : false
 }
]

0 个答案:

没有答案