MongoDB 3.0.6版
所以我有这个查询,我想执行一些小于和大于操作。另外,我想执行or
操作,但我无法弄清楚java中的语法。以下是我到目前为止:
FindIterable<Document> iterable3 = db.getCollection(collectionName).find(
new Document()
.append("timestamp", new Document()
.append("$gte", startTime)
.append("$lte", endTime))
.append("hourOfDay", new Document()
.append("$gte", minHourOfDay)
.append("$lte", maxHourOfDay))
.append("dayOfWeek", new Document()
.append("$or", new Document("2","4")))
);
我想要的是查询还要检查dayOfWeek
参数是否等于2
或4
。
答案 0 :(得分:3)
使用 $in
运算符,如下所示:
db.collection.find({
"timestamp": { "$gte": startTime, "$lte": endTime },
"hourOfDay": { "$gte": minHourOfDay, "$lte": maxHourOfDay },
"dayOfWeek": { "$in": [2, 4] }
});
以上查询是使用$or
运算符的以下查询的更简单版本:
db.collection.find({
"timestamp": { "$gte": startTime, "$lte": endTime },
"hourOfDay": { "$gte": minHourOfDay, "$lte": maxHourOfDay },
"$or": [
{ "dayOfWeek": 2 },
{ "dayOfWeek": 4 }
]
});
所以你的最终Java代码看起来像
FindIterable<Document> iterable3 = db.getCollection(collectionName).find(
new Document()
.append("timestamp", new Document()
.append("$gte", startTime)
.append("$lte", endTime))
.append("hourOfDay", new Document()
.append("$gte", minHourOfDay)
.append("$lte", maxHourOfDay))
.append("dayOfWeek", new Document("$in", Arrays.asList(2, 4)));
);