簡體   English   中英

原則MongoDB捆綁:當“ _id”是數組時,游標toArray()錯誤

[英]Doctrine MongoDB Bundle: Cursor toArray() Error When “_id” is an Array

由MapReduce產生的結果是,我有一個具有以下結構的MongoDb集合:

{ "_id" : { "id" : NumberLong(1), "date" : "04-26-2012" }, "value" : { "count" : 100 } }

在我的控制器中,我正在執行以下操作以返回一個數組以顯示結果:

$mongoDb         = $mongo->selectDatabase($dbname);        
$mongoCollection = $mongoDb->selectCollection($collname);
$qb              = $mongoCollection->createQueryBuilder(); 
$qb              = $qb->find();        
$resultCursor    = $qb->getQuery()->execute();
                                  ->limit(10);
$resultArray     = $resultCursor  ->toArray();

但是,我得到一個例外:“注意:在vendor / doctrine-mongodb / lib / Doctrine / MongoDB / Cursor.php第154行中數組到字符串的轉換”

下面是Cursor.php的154行。 MongoCursor :: key是否不能將“ _id”作為數組處理?

/** @proxy */
public function key()
{
    return $this->mongoCursor->key();
}

為了將mongoDb光標快速轉換為數組,您可以使用http://php.net/manual/en/function.iterator-to-array.php

$qb = $this->createQueryBuilder();

$qb->hydrate(false);

$query = $qb->getQuery();

$resultArray = iterator_to_array($query->execute());

key()總是返回一個字符串(請參閱http://php.net/manual/zh/class.iterator.php ),因此它會生成嘗試將數組轉換為字符串形式的通知。 不過,這只是一個通知,它仍然應該起作用。

解決此問題的最簡單方法可能是不對游標調用toArray():而是對其進行迭代( foreach $resultCursor as $value) ... )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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