MongoDB如何编写查询以检查大于和小于时间的时间间隔的值数组

时间:2016-04-13 06:00:04

标签: java mongodb mongodb-query

我有表名用户,我想让一些用户之间的用户 时间间隔。

我的用户表

user_id,updated_at
    1        100
    2        200
    3        300
    4        400   
    5        500 
    6        600
    7        700

正常查询检查时间大于和小于以下:

db.users.find({"updated_at":{$gt:90,$lte:200}})

我有这个

的时间戳地图
Map<Long,Long> timestamp: which contains values for greater than and less than time.

现在如果我在地图中传递值

timetampMap.put(90,200)
timetampMap.put(350,400)
timetampMap.put(560,700)

输出应该在查询之后

select * from users where (updated_at>90 && updated_at<=200)
select * from users where (updated_at>350 && updated_at<=400)
select * from users where (updated_at>560 && updated_at<=700)

user_id,updated_at
1        100
2        200
4        400   
6        600
7        700

请按照上述要求帮助编写查询,我不想在代码中使用for循环。

1 个答案:

答案 0 :(得分:0)

使用$or

之类的db.users.find({ $or: [ { updated_at:{ $gt:90, $lte:200}}, { updated_at:{ $gt:350, $lte:400}}, { updated_at:{ $gt:560, $lte:700}} ] })运算符

此查询正在执行或针对您的不同范围。

您可以在此处详细了解https://docs.mongodb.org/manual/reference/operator/query/or/