我正在使用spring mongoTemplate。我正在尝试从最小和最大日期找到出生日期。我得到的查询是
db.profile.find({ "$and" : [ { "dob" : { "$lte" : { "$date" : "2014-01-31T18:30:00.000Z"}}} , { "dob" : { "$gte" : { "$date" : "1995-01-31T18:30:00.000Z"}}}]}).pretty()
但它没有返回任何记录。我在哪里失踪?
答案 0 :(得分:1)
默认情况下,MongoDB中的所有查询都是和操作,因此您不需要在此处包装$and
。
这也是错误的方法,你的序列化应该是这样的:
{
"dob" : {
"$lte" : { "$date" : "2014-01-31T18:30:00.000Z"},
"$gte" : { "$date" : "1995-01-31T18:30:00.000Z"}
}
}
或者基本上以shell的方式:
db.collection.find({
"dob" : {
"$lte" : new Date("2014-01-31"),
"$gte" : new Date("1995-01-31")
}
})
查询构建器的内容如下:
DBObject query = new Query(
Criteria.where("dob")
.gte(new DateTime("1995-01-31").toDate())
.lte(new DateTime("2014-01-31").toDate())
).getQueryObject();