MongoDB4.2分布式事务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB4.2分布式事务相关的知识,希望对你有一定的参考价值。
参考技术A 1.启动类添加开启事务注解 可以不加 springboot会自动配置@EnableTransactionManagement
2.配置事务管理器
@Configuration
public class TransactionConfig
@Bean
MongoTransactionManager transactionManager(MongoDbFactory dbFactory)
return new MongoTransactionManager(dbFactory);
3.使用事务
@Transactional(rollbackFor = Exception.class)
MongoDB学习
mongodb – 分布式的基于文件存储的数据库,存储空间较大,适用于需求为频繁读写。(关系型数据库适合于多表依赖关系级联查询)
mongodb不支持事务操作(事务操作即如果一次查询中间失败,则会回滚=》即一次查询要么成功要么失败返回)
关系型数据库中的表(tables)对应mongodb中的集合(collections)
show dbs(查看当前都有哪些数据库)
use xiaoliu(如果有xiaoliu这个数据库就进入,如果没有就创建这个数据库并进入这个数据库,但因为xiaoliu这个数据库暂时是空的,所以紧接着show dbs还是看不到xiaoliu这个数据库)
db查看当前所在数据库
show collections 显示当前所在数据库中的集合都有哪些
db.user.insert({‘name’:’liupeijie’})在当前数据库中新建一个用户集合(user),并插入一条数据
db.user.find()在用户集合(user)中查询数据是否插入成功
db.user.findOne()查询用户集合(user)中的第一条数据
db.user.remove({‘name’:’zhangsan’})在user集合中删除name为zhangsan的数据(有几条删几条,remove(删除条件))
db.user.drop()清空user()集合中的所有数据
db.dropDatabase()删除了当前所在数据库
load(‘所要加载的js文件’,可以把要执行的mongodb语句写在一个js文件中再加载该文件)
Date.parse()返回的是从1970年到现在的毫秒数
db.user.insert([,,,]);//插入多条数据时用数组的形式
db.user.update({更新的条件},{更新的内容});
db.user.update({‘name’:’liupeijie’},{$set{‘age’:18}});//$set的作用是指定只修改数据中的一条而不会影响其他数据。
db.user.update({name:’liupeijie’},{$unset:{hobby:’’}});//$unset的作用是指定删除一条数据中的指定的键值对
db.user.update({name:’liupeijie’},{$set:{age:20}},{upsert:true});//第三个参数的作用是update和insert的结合体
db.user.update({},{$set:{hobby:[]}},{multi:true});//不写查询条件就会查询到所有的数据,第三个参数指定每一条数据都做制定的更新操作,如果不写multi:true,那么只会给第一条数据更新
db.user.update({name:’小李’},{$push:{hobby:’吃鸡’}});//$push的作用是给选中的数据中的指定的键推送值,这种push方式允许值重复,$addToSet的方式不允许值重复
var hobbys = [‘吃鸡’,’叫醒’,’学习’];
db.user.update({name:’liupeijie’},{$addToSet:{hobby:{$each:hobbys}}});//$each作用是推送数组的每一条
db.user.update({name:’liupeijie’},{$set:{‘hobby.0’:’健身’}});//‘hobby.0’是对数组第一个值的操作,以此类推
db.user.find({age:{$gte:20,$lte:25}});//$gte->大于等于,$lte->小于等于
db.user.find({age:{$gte:20,$lte:25}},{name:true,age:true,_id:false});//find()的第二个参数指定字段显不显示
db.user.find({age:{$in:[20,25]}},{name:true,age:true,_id:false});//$in的作用不言而喻哈哈
db.user.find({$or:[{age:{$gte:30}},{‘pc.brand’:’IBM’}]},{name:true,age:true,_id:false});//$or指任意满足一条条件即可,$and必须同时满足,$not不满足
db.user.find({
hobby: ‘敲代码’ //hobby:[‘敲代码’],注意二者的区别
}, {
name: true,
age: true,
_id: false
});
{hobby:{$all:[‘篮球’,’敲代码’]}}//$all指爱好里面,篮球和敲代码都得满足
{hobby:{$in:[‘篮球’,’敲代码’]}}//$in指爱好里面,篮球和敲代码满足其一即可
{hobby:{$size:3}}//{$size:3}指有三个爱好即可(爱好的数组大小是3)
db.user.find({},{name:true,age:true,_id:false}).limit(1).skip(0).sort({age:-1});//查找当前集合的所有数据按照指定格式输出,限制输出一条,跳过0条,按照年龄倒序排列
//可以打印出程序执行的时间
var startTime = (new Date()).getTime();
var endTime = new Date().getTime() - startTime;
print(‘run time is ‘ + endTime + ‘ms’);
db.collections.ensureIndex({username:1});//查询的数据量较大时(百万级以上的数据量),可通过建立索引的方式提高查询速度,但是索引占内存空间!!!(某一字段需要频繁查询时)
db.collections.getIndexes()//获取当前的索引
db.collections.dropIndex({});
以上是关于MongoDB4.2分布式事务的主要内容,如果未能解决你的问题,请参考以下文章