我正在使用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');
如何更改此查询?
答案 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');