Запрос MongoDB, возвращающий противоположность ожидаемых результатов - PullRequest
0 голосов
/ 19 августа 2011

Я пытаюсь найти сеанс с истекшим сроком, выполнив запрос к этой коллекции

{
  "_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 ]

3 голосов
/ 19 августа 2011

Вы можете использовать функцию javascript parseInt(), чтобы преобразовать строку в целое число.Обязательно используйте его в форме parseInt(my_string, 10), где вторым аргументом является целочисленная база;его поведение по умолчанию заключается в автоматическом определении базы, поэтому строки типа «0400» интерпретируются как восьмеричные, а не десятичные.

1 голос
/ 20 августа 2011

Возможно, вам лучше хранить expirationtime в базе данных, что облегчает (и эффективно) поиск записей с истекшим сроком действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...