[英]php mongodb array_unique not working in cursor
我有以下代碼可產生角色列表:
// My original code (using find)
$cursor = $collection->find(array("organization" => $curr_org['organization'], "role" => array('$exists' => true)));
// The new code (using distinct)
$cursor = $collection->distinct('role', array("organization" => $curr_org['organization'], "role" => array('$exists' => true)));
foreach($cursor as $curr_org){
echo '<ul>';
echo '<li>';
echo $curr_org['role'];
echo '</li>';
echo '</ul>';
}
$ curr_org ['role']中包含的數據重復。
我一直在弄亂array_unique
並且無法找到'role'的值(獲取數組或NULL),或者我正在獲取第一個和最后一個值(id和組織)。
我的示例文檔是:
{
"_id" : ObjectId("571626ac768d884c268b456b"),
"name" : "John Doe",
"email" : "jack@daniels.com",
"manager" : "Jack Daniels",
"role" : "Boss Man",
"password" : "$2y$10$Bk8kVZaa0K.AJ7GqWT65LuTkWYVtNw8jK6Am5izcnvHAVBIxj5VHC",
"organization" : "MyOrg"
}
誰能讓我知道我應該在循環中的array_unique
位置添加array_unique
,這樣我只產生一個唯一角色列表?
最好的問候,丹尼斯·霍爾
更新:使用distinct似乎可行,但是,它僅回顯每個角色的第一個字符,如下所示:
使用查找:
Boss Man
Boss
Expeditor
Shift Manager
Ditch Digger
Boss
CEO
CEO
Expeditor
使用不同的:
B
B
E
S
D
C
已解決:解決方案是在光標命令中使用“ distinct”。 在cursor命令以及循環中定義鍵也導致結果被截斷為單個字母。 在循環中,解決方案是從回顯$ curr_org ['role']中刪除['role']; 線。 工作代碼如下:
$cursor = $collection->distinct('role', array("organization" => $curr_org['organization'], "role" => array('$exists' => true)));
foreach($cursor as $curr_org){
echo '<ul>';
echo '<li>';
echo $curr_org;
echo '</li>';
echo '</ul>';
}
如果您只關心角色,則可以使用MongoCollection::distinct
$roles = $collection->distinct('role', array("organization" => $curr_org['organization']);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.