如果你的java项目中使用到了org.springframework.data.mongodb包的话,那么本篇文章可能有你需要的东西。
Query query= new Query();//先new一个拼接查询的语句出来 Query全类名:
org.springframework.data.mongodb.core.query.Query;大家别引错了
废话不多说,开整:
1、一般查询
query.addCriteria(Criteria.where("hh").is(1)); 相当于:where hh= 1;
query.addCriteria(Criteria.where("aa").is("dd")); 相当于:where hh= 1 and aa = "dd" 多个条件可以无限添加
mongoTemplate.find(query, userEntity.class);相当于:select * form userEntity where hh = 1 and aa = "dd"
2、一般查询之大于/小于等
query.addCriteria(Criteria.where("date").gte(new Date()).lte(new Data())); gte-大等于 lte-小等于 gt-大于 lt- 小于
如果是时间的话 传入java.util.Date格式,如果是int的话 传入int类型即可,数据库会自动转换查询,如果数据库是数字 你传入“1"字符串,会有查询不到的情况
3、查询结果字段排除
query.fields().include("hh") //查询出来的结果只包含hh字段(id是默认的,也会被查出来)的信息,其他的被排除掉了 多的话,直接.include("aa")即可,可无限追加,当然你的集合(表)中有这些字段
query.fields().exclude("hh") //查询出来的结果不包含hh字段,其他的都会被查出来(id字段是排除不掉的),如果想排除多个的话直接.exclude("aa")即可,可无限追加,当然你的集合(表)中也有这些字段
4、多表查询
多表查询相对困难,研究多日无果,后放弃了,如果你还是想要去多表查询,请另行咨询广大网友(百度一下),如果你咨询后发现很麻烦 想要放弃另寻他路,你可以阅读一下我的另一篇博文@DBRef的使用,也许会对你有所帮助!
5、数组字段查询
示例(user集合中的两条数据):
{
"id":"123213",
"realName":"小面"
"role" : [{
"rt" : "1",
"name" : "老师",
"val" : "xxy"
},
{
"rt" : "3",
"name" : "主任"
"val" : "xyx"
}
]
},
{
"id":"123217",
"realName":"小柳"
"role" : [{
"rt" : "3",
"name" : "老师",
"val" : "yyx"
}]
}
如果你想要通过role中的“老师”查询数据的话:
query.addCriteria(Criteria.where("role.name").is("老师"))
会将这两条数据都查出来
如果你想通过 同时满足"rt"和"name"来精确的查询"小面"这一条数据的话,你需要这样写:
Document doc = new Document(); (org.bson.Document)
Document append = doc.append("role", new Document("$elemMatch", new Document("rt", "1").append("name","老师")));
Query query = new BasicQuery(append);