Mongdb的基本操作及java中用法
Mongdb中所有数据以Bson(类似JSON)的格式存在,可以存储集合,map,二进制文件等多种数据类型。
数据库的常用操作
use [数据库名称];//有就选中,没有就添加并选中
show dbs;//查询所有数据库列表
db; //查看当前库
db.dropDatabase();//删除当前库;
集合的常用操作
show collectoins;//查询当前库下的所有集合;
show tables;//也是查询当前库下的所有集合;
db.[集合名称].drop();//删除指定名称的集合;
db.[集合名称].insert({});//若不存在该集合,会先创建再添加数据。
文档的常用操作
db.[集合名称].insert({});//为指定名称集合添加数据;
db.[集合名称].insertOne({});//为指定名称集合添加一条数据;
db.[集合名称].insertMany({});//为指定名称集合添加多条数据;
db.[集合名称].find();//查询指定集合所有数据;
db.[集合名称].findOne();//查询指定集合中存在的第一条数据;
db.[集合名称].findAndModify();//查询出所有数据并修改
db.[集合名称].findOneAndDelete();//查询出第一条符合条件的数据并删除
db.[集合名称].findOneAndReplace();//查询出第一条符合条件的数据并替换
db.[集合名称].findOneAndUpdate();//查询出第一条符合条件的数据并修改
db.[集合名称].deleteOne();//删除一条符合条件的数据
db.[集合名称].deleteMany();//删除多条符合条件的数据 db.[集合名称].update();//修改集合中一条符合条件的数据
db.[集合名称].updateOne();//修改集合一条符合条件的数据
db.[集合名称].updateMany();//修改集合所有符合条件的数据
查询用操作符:
$gt 大于、$lt 小于、$gte 大于等于、$lte 小于等于。
db.test.find({"t":{"$gt":10}});
db.test.find({"t":{"$lt":10}});
db.test.find({"t":{"$gte":10}});
db.test.find({"t":{"$lte":10}});
修改文档时需要添加的操作符:
$inc
根据要添加的值递增该字段的值。
db.test.update({"a":"d"},{"$inc":{"t":2}});//字段为数字类型才能用
$mul
将该字段的值乘以指定的值
db.test.update({"a":"d"},{"$mul":{"t":3}});//字段为数字类型才能用
$rename
重命名字段
db.test.update({"a":"d"},{"$rename":{"a":"b"}});
$setOnInsert
操作时,操作给相应的字段赋值
//当未查出满足条件的数据时,执行添加操作,$setOnInsert后的值才会执行,前提是upsert的参数设置为true
//当查出已存在条件的数据时,只会执行$set后的语句
//一般情况下$setOnInsert与$set一起使用。
db.test.update({"a":"d"},{"$setOnInsert":{"as":"df"},"$set":{"zzx":"sdf"}},{"upsert":"true"});
$set
用来指定一个键的值,如果不存在则创建它
db.test.update({"a":"b"},{"$set":{"a":"c"}});//把所有的a=b的值中a改为c;如果有找出多个符合条件的,只会修改第一个被插入的数据;
db.test.update({"a":"b"},{"$set":{"time":ISODate("2019-11-12 12:34:56")}});//添加时间字段
$unset
用来指定一个键的值,如果不存在不创建创建它
db.test.update({"a":"b"},{"$unset":{"a":[任意参数]}});//理解为删除指定字段的意思
$min
只有当指定的值小于现有字段值时才更新该字段。
db.test.update({"z":"s"},{"$min":{"t":14}});//填写的值必须小于存储的值才会更新;
$max
只有当指定的值大于现有字段值时才更新该字段。
db.test.update({"z":"s"},{"$max":{"t":14}});//填写的值必须大于存储的值才会更新;
java的Mongdb的基本操作
首先需要引入如下的jar包

1.连接mongodb
//初始化mongdb数据库,mongdb初始化默认端口为27017
public class DataBase {
private static MongoClient mongoClient; static {
System.out.println("MongoDB初始化");
if(mongoClient == null){
mongoClient = new MongoClient("localhost", 27017);
}
}
}
2.连接指定数据库下面的指定集合
public static MongoCollection<Document> getCollection(String dbName, String collName) {
if (null == collName || "".equals(collName)) {
return null;
}
if (null == dbName || "".equals(dbName)) {
return null;
}
MongoCollection<Document> collection = mongoClient.getDatabase(dbName).getCollection(collName);
return collection;
}
3.执行操作
添加(insertOne可以换成insertMany())
MongoCollection<Document> collection = getCollection(dbName, collName);
Document param = new Document();
param.put("a", "b");
param.put("c", "d");
collection.insertOne(param);
修改(updateOne可以换成updateMany或者findOneAndUpdate)
MongoCollection<Document> coll = getCollection("test", "login");
Document test = new Document();
test.put("a","v");
test.put("b","z");
coll.updateOne(test, new Document("$set",new Document("role","user")));
删除(deleteOne可以换成deleteMany或者findOneAndDelete)
MongoCollection<Document> collection = getCollection(dbName, collName);
Document param = new Document();
param.put("a", "b");
param.put("c", "d");
collection.deleteONe(param);
查询
MongoCollection<Document> collection = getCollection(dbName, collName);
Document param = new Document();
param.put("a", "b");
param.put("c", "d");
FindIterable<Document> find = collection.find(param);
MongoCursor<Document> iterator = find.iterator();
while (iterator.hasNext()) {
Document next = iterator.next();
System.out.println(next);
}
Mongdb的基本操作及java中用法的更多相关文章
- String的不变性到final在java中用法
final在Java语言里面啥意思 final修饰一个类,那么这个类就是不可继承.string就是一个非常有名的被final修饰的类,不过他的更加有名的是“不可被修改”. 究竟什么是不可改变?stri ...
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- 初探java中this的用法
一般this在各类语言中都表示“调用当前函数的对象”,java中也存在这种用法: public class Leaf { int i = 0; Leaf increment(){ i++; retur ...
- Java中getResourceAsStream的用法
首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以'/'开头时默认是从此类所在 ...
- java中super的两种用法
通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自 ...
- Java中super的几种用法并与this的区别
1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println("Base"); ...
- Java中 final static super this instanceof 关键字用法
一.final关键字 final可以修饰变量.方法及类: 1.当定义一个final变量时,jvm会将其分配到常量池中,其所修饰的对象只能赋值一次,对基本类型来说是其值不可变,引用类型(包括作为函数形参 ...
- java中 this 和super的用法
通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自 ...
随机推荐
- ELK2之ELK的语法学习
1.回顾 (1)es是什么? es是基于Apache Lucene的开源分布式(全文)搜索引擎,提供简单的RESTful API来隐藏Lucene的复杂性. es除了全文搜索引擎之外,还可以这样描述它 ...
- 三 nginx+uWSGI+django+virtualenv+supervisor发布web服务器
https://www.cnblogs.com/pyyu/p/9481344.html?tdsourcetag=s_pcqq_aiomsg 一 uwsgi安装 1.安装uwsgi,进入到一个虚拟机环境 ...
- DENSE_RANK(),允许并列名次、名次不间断,如122344456
将score按ID分组排名:dense_rank() over(partition by id order by score desc) 将score不分组排名:dense_rank() over(o ...
- Flask学习之七 单元测试
英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-vii-unit-testing 中文翻译地址:http ...
- oracle trunc(d1[,c1])
[功能]:返回日期d1所在期间(参数c1)的第一天日期 [参数]:d1日期型,c1为字符型(参数),c1默认为j(即当前日期) [参数表]:c1对应的参数表: 最近0点日期: 取消参数c1或j 最近的 ...
- @总结 - 10@ Miller-Rabin素性测试与Pollard-Rho因数分解
目录 @1 - 素性测试:Miller-Rabin算法@ @1.1 - 算法来源@ @1.2 - 算法描述@ @1.3 - 算法实现@ @2 - 因数分解:Pollard-Rho算法@ @2.0 - ...
- E - D Tree HDU - 4812 点分治+逆元
这道题非常巧妙!!! 我们进行点分治的时候,算出当前子节点的所有子树中的节点,到当前节点节点的儿子节点的距离,如下图意思就是 当前节点的红色节点,我们要求出红色节点的儿子节点绿色节点,所有绿色的子树节 ...
- Android教程-02 在程序中输出Log
视频教程,建议采用超清模式观看 在Android中一般都用Log输出日志,常见的有5个不同的级别 Log.v() Log.d() Log.i() Log.w() Log.e() 当然很多程序员还比较习 ...
- Android TextView点击效果
在Android开发中,我们有时候需要单独的点击某一段文本,如图所示: 如上图,我们要求点击新用户注册这个TextView,为了有更好的用户体验,我们肯定要设置该TextView的点击效果.下面介绍如 ...
- 严重: Servlet.service() for servlet [jsp] threw exception java.lang.NullPointerException
五月 04, 2018 11:53:24 上午 org.apache.catalina.core.ApplicationDispatcher invoke 严重: Servlet.service() ...