2016-04-13 5 views
-1

Ich habe Tabellenname Benutzer, und ich möchte die Benutzer zwischen einigen Zeitintervallen erhalten.MongoDB Wie schreibe ich Abfrage für das Überprüfen von Array von Werten für Zeitintervalle größer als und weniger als Zeit

Meine Benutzer Tabelle

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

Normale Abfrage für als Zeit von mehr als und weniger Kontrolle ist unter:

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

I Karte Zeitstempel nun für dieses

Map<Long,Long> timestamp: which contains values for greater than and less than time. 

haben Wenn ich Werte in Karte wie

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

nach Abfrage Der Ausgang

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 

Bitte helfen Abfrage schreiben nach der Anforderung sein sollte, möchte ich nicht für diese in Code for-Schleife verwenden.

+0

Können Sie bitte Ihre Sammlung veröffentlichen? –

Antwort

0

Verwenden $or Operator so etwas wie db.users.find({ $or: [ { updated_at:{ $gt:90, $lte:200}}, { updated_at:{ $gt:350, $lte:400}}, { updated_at:{ $gt:560, $lte:700}} ] })

Diese Abfrage tut oder für verschiedene Bereiche.

Sie können hier lesen sie mehr über https://docs.mongodb.org/manual/reference/operator/query/or/

+0

danke Hast du eine Idee, wie man es in Java macht? – Kamini

+0

Es hängt davon ab, welche Bibliothek Sie für die Mongo-Interaktion verwenden –

Verwandte Themen