我有一个数据库需要查询,我需要将所有结果从嵌入式文档中获取到数组中,以便将其存储到php中的变量中。这是mongodb的记录如下所示:
{
"_id" : ObjectId("987654321"),
"roles" : {
"988434fe-9ac8-390f-abb4-18e4a0cc83fd" : 9,
"fc261c0f-7124-3c81-89e8-ecb33771fe4e" : 9
},
"groupType" : "PUBLIC_GROUP",
"name" : "Service Tech Role",
"type" : "usergroup"
}
我可以使用下面的PHP函数从该文档中获取所有信息,嵌入式文档数据除外。
function getPerms()
{
$m = new MongoClient ("mongodb://localhost" );
$db = $m->test;
$collection = $db->roles;
$query = array( '_id' => $_SESSION['groupId'] );
$cursor = $collection->find( $query );
foreach ($cursor as $document) {
$_SESSION['object_permissions'] = $document["roles"];
}
}
我需要的是在数组中设置“角色”数据,如下所示:
988434fe-9ac8-390f-abb4-18e4a0cc83fd,9
fc261c0f-7124-3c81-89e8-ecb33771fe4e,9
将嵌入式文档放入数组中需要做些什么,以便将它们作为会话变量存储在php中?
我认为您的错误在其他地方,它可能更多是与查询返回零文档有关,或者角色数据首先是空数组,或者角色数据不存在并且您有未定义的索引错误。
您能否证明可以从该文档中获取除嵌入式文档数据以外的所有信息?做一个var_dump($document)
循环内。
我怀疑您的脚本可能甚至没有进入foreach循环。您可能需要检查mongodb查询错误,或者尝试将查询修改或删除作为测试。
旁注:您还应该为此使用findOne而不是find()
$document = $collection->findOne($query);
$_SESSION['object_permissions'] = $document['roles'];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句