2010-09-22 99 views
0

我似乎有使用光標,我試着將數據從一個MongoDB中的一些麻煩光標訪問MongoDB的值。這裏是我的簡單的數據結構的截圖:不能使用PHP

data structure screenshot http://droplr.com/IpcH+

我嘗試使用以下命令:

$collection_name = "users"; 
$collection = $this->mongo->db->$collection_name; 
$which_document = array("email" => $email_address); 
$which_fields = array("words"); 
$cursor = $collection->find($which_document, $which_fields); 

但我的$光標似乎並沒有進一步去任何插入文檔比實際的文件。最後,我想在「words」字段的created_at字段中對sort()和limit()進行排序,但我似乎陷入了僵局。而且MongoDB的錯誤傳遞不是很有幫助,或者我不知道如何正確使用它。 (我認爲是後者。)

一個想法:我不知道正在生成方括號內的「字」表是正確的,但這裏是我用在這裏插入數據的代碼:

function create_word($word, $email_address){ 
    $collection = 'users'; 

// make sure word isn't null 
if($word !== NULL){ 

// add new data to the 'words' set 
    $new_data = array('$addToSet' => array('words' => array(
                  'word' => $word, 
                  'status' => 'open', 
                  'created_at' => time() 
                  ))); 
    $this->mongo->db->$collection->update(array('email' => $email_address), $new_data);   
} 

非常感謝您的幫助,您可以給!

回答

2

無法排序的子文檔。你需要在客戶端做到這一點。在你的情況檢索字數組:

$array = iterator_to_array($cursor); 
$words = $array[0]["words"]; 

然後使用PHP來排序值。

+0

啊,點符號!當在PHP驅動程序中使用點符號時,是否有一條硬性規定?不幸的是,沒有運氣。這是使用[this code](http://droplr.com/QUJW)的光標值var_dump的[截圖](http://droplr.com/hHjj)。我錯過了更新的內容嗎?實際上我將在created_at上進行排序,但我嘗試在「1」和「-1」之間交替,沒有任何區別。 – 2010-09-22 21:06:02

+0

我很好奇,現在就自己試試。排序子文檔不起作用。文檔中的示例涵蓋了一種不同的排序方式,即在文檔中嵌套值並對所有文檔進行排序,而不是嵌套數組。 – halfdan 2010-09-22 21:44:48

+0

有趣。這是我使用MongoDB的第一個項目,從您的角度來看,您會提出某種數據重構嗎?這似乎是一個相當重要的問題,因爲我將基本上對這些數據進行分頁,使用.limit(),.skip()和.sort()會很好。 – 2010-09-22 21:46:07

1

嘗試

$collection->find(array($which_document, $which_fields))->sort(array("words.created_at" => -1)); 
+0

不幸的是我在這裏沒有運氣。無論我使用1還是-1,我的var_dump都保持不變。 – 2010-09-22 21:42:22

+0

讓我們澄清一下吧?你正嘗試用「created_at?」排序「words」數組我不確定你是否可以這樣做。我向開發人員提出了這個問題。請參閱我在mongodb論壇上提出的以下討論http://groups.google.com/group/mongodb-user/browse_thread/thread/4b950895dc0fab9c/60bb74a316a7eaba?lnk=gst&q=sdotsen#60bb74a316a7eaba – luckytaxi 2010-09-22 21:44:45

+0

您和halfdan的聲音都指向同樣的問題。現在閱讀主題,但是我會在這裏提出和我一樣的問題。你會提出一個數據重組,因爲我將如此深入地處理這些數據? – 2010-09-22 21:47:48