簡體   English   中英

php mongodb array_unique在光標中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM