2011-10-12 118 views
1

我正在開發一個API,使用Codeigniter和Alex Bilbies oAuth2和MongoDB庫。 我需要做一個MongoDB查詢,我在這裏查詢_id爲1且訪問令牌爲空的文檔。MongoDB查詢問題

我有這到目前爲止,但它不工作:

$exists_query = $this->CI->mongo_db->select('access_token')->where(array('_id' => $session_id, 'access_token' != NULL))->get('oauth_sessions'); 

我想這太:

$exists_query = $this->CI->mongo_db->select('access_token')->where(array('_id' => $session_id))->where_not_equal('access_token', NULL)->get('oauth_sessions'); 

如何更改此查詢工作?

回答

0

這似乎很奇怪..你是不是使用了mongo提供的id?

如果你是,你必須使用特殊的mongoid函數將原始字符串轉換爲mongo id。如果你不使用默認的mongoid ...比你真的應該!

另外,你爲什麼不得不設置空值? Mongo非常非結構化,如果一個字段沒有被使用,你不需要爲它設置一個空值..只是不包含該字段..這不是MySQL你需要存儲空值..每行在mongo db可以有不同的列..這樣,當你查詢分貝,你可以使用mongo的本地方法來檢查是否存在字段..

使用mongo應該使用它的方式..而你不會有您有

這些問題

您的查詢應該是這個樣子像

$this->CI->mongo_db->select('access_token')->where(array('_id' => MongoId($session_id), exists => array('access_token' => -1)))->get('oauth_sessions');