[英]Doctrine2 and MongoDB Query on embedded array of an embedded array of referenced documents in a Document
[英]php: query mongodb embedded documents into an array
我有一個數據庫需要查詢,我需要將所有結果從嵌入式文檔中獲取到數組中,以便將它們存儲到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'];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.