MongoDB 操作范例

来源:互联网 发布:郭天祥单片机教材下载 编辑:程序博客网 时间:2024/06/01 08:09

查询

查询嵌套文档

比如,有商品文档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");
0 0
原创粉丝点击