MongoDB查询的问题

时间:2011-10-12 13:51:52

标签: codeigniter oauth

我正在使用Codeigniter和Alex Bilbies oAuth2和MongoDB库开发API。 我需要执行一个MongoDB查询,在其中查询_id为1且访问令牌为空的文档。

到目前为止我有这个但是它不起作用:

$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');

如何更改此查询?

1 个答案:

答案 0 :(得分: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');