查询
查询嵌套文档
比如,有商品文档goods,结构如下:
{
"name":"牙刷",
"class":{
"classNo": 111,
"name":"日用品"
}
}
现在要查找所有 classNo=111的商品,怎么查?
命令行:
> db.goods.find( {"class.classNo":111} )
java :
Document query = new Document("class.classNo",111);
mongoCollection.find(query);
指定要返回的属性
还是以goods文档来说,如果现在只要返回name属性,怎么办?
命令行:
> db.goods.find({"name":"牙刷"},{"name":1})
第二个参数{"name":1}
就是指定,结果中返回name属性,如果值为-1,则表示不返回该属性
java:
Document query = new Document("name","牙刷");
Document fields = new Document("name",1);
mongoCollection.find(query).projection(fields);
使用$in查找包含
生活用品(11)分类下,有牙膏牙刷(111),毛巾(112),洗发水(113)等分类。
现在要查找属于生活用品的商品,怎么查?可以使用$in
查找器
命令行:
> db.goods.find({ "class.classNo" : { "$in" : [111, 112, 113] } })
java :
Document query = new Document();
query.append("class.classNo", new Document("$in", fnClsDbList)) ;
查询的结果中包含数组
结果中包含数组,比如:
{
"address":[
"广东广州广东工业大学",
"广东广州华南理工大学"
]
}
这个数组怎么获取呢?
java:
List<String> list = result.get("address");
Document
类的get方法返回的是一个Object,可以把这个Object直接转成list。
如果结果中的数组是一个对象数组的话,比如像下面:
{
"address":[
{"value":"广东广州广东工业大学"},
{"value":"广东广州华南理工大学"}
]
}
这时候应该转成Document
数组:
java:
List<Document> list = result.get("address");