MongoDB查询返回与预期结果相反的情况

时间:2011-08-19 19:15:22

标签: mongodb

我试图通过对此集合运行查询来查找过期的会话

{
  "_id" : ObjectId("4e4e88b81144e5a658000000"),
  "__meta" : { 
    "id" : "3a72c90f8455e2fd4b8a05ffa04b870a8672f1a9",
    "expiration" : "3600",
    "timestamp" : 1313769656 
  }
}

查询

db.sessions.find({$where: function(){
  return (this.__meta.timestamp + this.__meta.expiration) <= Math.round(new Date().getTime()/1000);
}})

我期待收集,但我得到一个空的结果。

2 个答案:

答案 0 :(得分:3)

您可以使用javascript parseInt()函数将字符串转换为整数。一定要以parseInt(my_string, 10)的形式使用它,其中第二个参数是整数基数;它的默认行为是自动检测基数,因此像“0400”这样的字符串被解释为八进制,而不是十进制。

答案 1 :(得分:1)

您可能最好在数据库中存储expirationtime,以便轻松(高效)查找过期记录。