MongoDB学习-->Gridfs分布式存储&DBRef关联查询
mongodb自带的一个分布式文件系统
fs.files _id filename md5 size uploaddate contenttype metadata {"user_id":1}
fs.chunks _id files_id n(序号) data
{ "metadata" : { "user_id" : 101} , "filename" : "video.min2.js" , "aliases" : null , "chunkSize" : 261120 , "uploadDate" : { "$date" : "2017-03-28T13:48:20.784Z"} , "length" : 282753 , "_id" : { "$oid" : "58da69a45aa6c70234eb70f1"} , "contentType" : null , "md5" : "e5ab0872d9b25fcb7268df3a93c29873"}
测试GridFs文件上传与下载
package com.tangzhe.gridfs; import com.mongodb.BasicDBObject;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSFile;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import org.springframework.test.context.junit4.SpringRunner; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; /**
* Created by 唐哲
* 2018-03-15 9:33
* 测试GridFs文件上传与下载
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class GridFsTest { @Autowired
private GridFsTemplate gridFsTemplate; /**
* 测试GridFs文件上传
*/
//@Test
public void gridFsUpload() throws FileNotFoundException {
//System.out.println(gridFsTemplate);
File file = new File("D:\\IdeaProjects\\cxytiandi\\mongodb-demo\\upload.txt");
GridFSFile gridFSFile = gridFsTemplate.store(new FileInputStream(file), file.getName(), new BasicDBObject("user_id", 101));
System.out.println(gridFSFile.toString());
} /**
* 测试GridFs文件下载
*/
//@Test
public void gridFsDownload() throws IOException {
GridFSDBFile gridFSDBFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is("5aa9cf31d678412b40ff5ab4")));
gridFSDBFile.writeTo("D:\\IdeaProjects\\cxytiandi\\mongodb-demo\\download.txt");
} }
DBRef关联查询
package com.tangzhe.dbref; import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; /**
* Created by 唐哲
* 2018-03-15 16:19
* DBRef关联查询
*/
@Document(collection = "class_info")
@Data
public class ClassInfo { @Id
private String id;
private String name; }
package com.tangzhe.dbref; import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document; /**
* Created by 唐哲
* 2018-03-15 16:29
* DBRef关联查询
*/
@Document(collection = "student")
@Data
public class Student { @Id
private String id;
private String name;
@DBRef
private ClassInfo classInfo; }
package com.tangzhe.dbref; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.test.context.junit4.SpringRunner; /**
* Created by 唐哲
* 2018-03-15 16:30
* 测试DBRef关联查询
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class DbRefTest { @Autowired
private MongoTemplate mongoTemplate; //@Test
public void test1() {
ClassInfo classInfo = new ClassInfo();
classInfo.setName("三年一班");
mongoTemplate.save(classInfo); Student student = new Student();
student.setName("张三");
student.setClassInfo(classInfo);
mongoTemplate.save(student);
} //@Test
public void test2() {
ClassInfo classInfo = mongoTemplate.findOne(Query.query(Criteria.where("id").is("5aaa30c0d678410bac20db1a")), ClassInfo.class);
Student student = new Student();
student.setName("李四");
student.setClassInfo(classInfo);
mongoTemplate.save(student);
} //@Test
public void test3() {
Student student = mongoTemplate.findOne(Query.query(Criteria.where("id").is("5aaa30c0d678410bac20db1b")), Student.class);
System.out.println(student);
} }
MongoDB学习-->Gridfs分布式存储&DBRef关联查询的更多相关文章
- ofbiz学习笔记01--多表关联查询
不管做什么项目,肯定会用到多表关联查询数据,从网络查询得知ofbiz有三种多表关联查询方法 实现一:Screem.xml 中的 section 里,加 <action>, 加 get-re ...
- Mybatis框架学习总结-表的关联查询
一对一关联 创建表和数据:创建一张教师表和班级表,这里假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIM ...
- Mybatis学习总结四(关联查询)
一.一对一查询 实例:查询所有订单信息,关联查询下单用户信息. Method1:使用resultType,定义订单信息po类,此po类中包括了订单信息和用户信息. public class Order ...
- 详解MongoDB中的多表关联查询($lookup)
一. 聚合框架 聚合框架是MongoDB的高级查询语言,它允许我们通过转换和合并多个文档中的数据来生成新的单个文档中不存在的信息. 聚合管道操作主要包含下面几个部分: 命令 功能描述 $projec ...
- 详解MongoDB中的多表关联查询($lookup) (转)
一. 聚合框架 聚合框架是MongoDB的高级查询语言,它允许我们通过转换和合并多个文档中的数据来生成新的单个文档中不存在的信息. 聚合管道操作主要包含下面几个部分: 命令 功能描述 $projec ...
- [Spring Data MongoDB]学习笔记--MongoTemplate查询操作
查询操作主要用到两个类:Query, Criteria 所有的find方法都需要一个query的object. 1. 直接通过json来查找,不过这种方式在代码中是不推荐的. BasicQuery q ...
- mongoDB学习笔记——在C#中查询
1.下载安装 想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动貌似有很多种,如官方提供的samus. 实现思路大都类似.这里我们用官方提供的mongo-csh ...
- MongoDB 学习笔记之 DBRef
DBRef: MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link).内嵌比较好理解,就是字段内容是个数组,数组内再包含文档,而我们今天介绍的是另一种,称为链接DBRef.由 ...
- MongoDB 集合间关联查询后通过$filter进行筛选
在前面的分享中,有讲解 “详解MongoDB中的多表关联查询($lookup)” 一节,其内容涵盖了常见的集合管理的需求.我们知道文档的选择都是通过$match进行匹配刷选.但这是文档间的匹配筛选,并 ...
随机推荐
- fleet-运行一个全局的单元
运行一个全局的单元 正如前面所提到的,全局单元是有用的,用于在您的集群中的所有机器上运行一个单元.它不会比一个普通的单元差太多,而是一个新的x-fleet参数称为Global=true.这是一个示例单 ...
- 数据库(数据库、表及表数据、SQL语句)
数据库MYSQL 今日内容介绍 u MySQL数据库 u SQL语句 第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储 ...
- hashlib(加盐)回炉练习
简介: 用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法.在python3中已经废弃了md5和sha模块,简单说明 ...
- SharePoint Server 2016 WEB 网站浏览器支持
SharePoint Server 2016支持多种常用的Web浏览器,如Internet Explorer,Google Chrome,Mozilla Firefox,Apple Safari和Mi ...
- Cookie 没你不行
Cookie 没你不行 Cookie 没你不行 前言: Cookie 是什么 起源 到底是什么? 使用场景 如何使用cookie Cookie 和http协议 (服务端操作cookie) Cookie ...
- 【UML】时序图Sequence diagram(交互图)(转)
前言 UML时序图是UML动态图之一,它是强调时间顺序的交互图. 定义 时序图是显示按时间顺序排列的对象之间交互的图. 组成元素 对象 包括三种命名 ...
- springboot autoconfig
springboot自动配置的核心思想是:springboot通过spring.factories能把main方法所在类路径以外的bean自动加载 springboot starter验证 我在spr ...
- Win10激活方法(企业版)
Win10激活 注意:以管理员身份运行,需要电脑有网(亲测激活企业版没问题) 然后一条一条复制执行 slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43 slmgr /sk ...
- python之golbal/nonlocal
一.关键字 golbal nonlocal 在局部修改全局的变量为什么会报错 count = 0 def func(): count += 1 func() # UnboundLocalError: ...
- javaweb基础(19)_jsp标签
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...