У меня есть коллекция пользователей в mongodb, и я использую lift / scala для выполнения операций User.findAll и получения количества пользователей, созданных за определенные периоды времени. Я использую метод getTime для objectId, однако мне нужно применить несколько методов и умножить их, чтобы получить строку, хранящуюся в каждом документе, преобразовать ее обратно в objectID и преобразовать в секунды из миллисекунд. Это строка кода для пользователей, созданная за последний час:
val users = User.findAll.filter {u: User => ((((ObjectId.massageToObjectId (u._id)). getTime) / 1000) <= 3600)}. длина </p>
Мне нужно найти способ сделать это внутри базы данных, а не помещать все данные в память и затем фильтровать их с помощью функции. В прошлом я использовал queryBuilder такими способами для достижения той же цели, но в этом случае у меня не было других методов вычислений, которые можно применить к значению из документа:
val qry1 = QueryBuilder.start ("numberOfFriends"). moreThan (0) .get
var oneplus: List [User] = User.findAll {qry1}
Мне также известны такие методы:
User.findAll (("name" -> "joe") ~ ("age" -> 27))
И я знаю, что findall может принимать множество других вещей, таких как DBObject, называемый sort. Но я не знаю, как это использовать.
Если кто-то знает, как манипулировать одним из этих методов, или может предложить другой, то он был бы очень признателен.
Спасибо,
-Ronnie