我在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
}
]