系列文章目录
提示:spring data mongo:2.6.7/mongodb:6.0
SpringDataMongo API对应mongosh的使用-查询-概要
文章目录
前言
提示:mongo查询概述:
例如:查询mongo内嵌文档的相关api
提示:以下是本篇文章正文内容,下面案例可供参考
1.匹配内嵌的文档
# 准确匹配,值相等且field顺序也要一致
{<field>:{<filed1>:<value1>,<filed2>:<value1>}}
@Test
public void testMatchAnEmbeddedDocument() {
Document bson = new Document().append("h", 14).append(
"w", 21).append("uom", "cm");
Document size = new Document().append("size",bson);
List<Inventory> list = template.find(new BasicQuery(size), Inventory.class);
System.out.println(
JSONObject.toJSONString(list)
);
}
2.查询内嵌文档的field 同上
field字段必须使用引号括起来,用.符号标识内嵌关系"field.nestedfield"
{ <field1>: { <operator1>: <value1> }, ... }
1.相等
db.inventory.find( { "size.uom": "in" } )
@Test
public void testQueryOnNestedField() {
Query query = Query.query(new Criteria("size.uom").is("in"));
List<Inventory> list = template.find(query, Inventory.class);
System.out.println(
JSONObject.toJSONString(list)
);
}
2.queryOperators指定条件
# { <field1>: { <operator1>: <value1> }, ... }
db.inventory.find( { "size.h": { $lt: 15 } } )
@Test
public void testMatchUserQueryOperator() {
Query query = Query.query(new Criteria("size.h").lt(15));
List<Inventory> list = template.find(query, Inventory.class);
System.out.println(
JSONObject.toJSONString(list)
);
}
3.and
db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )
import static org.springframework.data.mongodb.core.query.Criteria.*;
@Test
public void testSpecifyAndCondition() {
Query query = Query.query(new Criteria().andOperator(
where("size.h").lt(15),
where("size.uom").is("in"),
where("status").is("A")
));
List<Inventory> list = template.find(query, Inventory.class);
System.out.println(
JSONObject.toJSONString(list)
);
}