Mongdb的基本操作及java中用法

Mongdb 中所有数据以 Bson(类似 JSON)的格式存在,可以存储集合,map,二进制文件等多种数据类型。

数据库的常用操作

use [数据库名称];//有就选中,没有就添加并选中
show dbs;//查询所有数据库列表
db; //查看当前库
db.dropDatabase();//删除当前库;

 

集合的常用操作

show collections;//查询当前库下的所有集合;
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 小于等于。

1
db.test.find({"t":{"$gt":10}});<br>db.test.find({"t":{"$lt":10}});<br>db.test.find({"t":{"$gte":10}});<br>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;
</span><span style="color: rgba(0, 0, 255, 1)">static</span><span style="color: rgba(0, 0, 0, 1)"> {
    System.out.println(</span>"MongoDB初始化"<span style="color: rgba(0, 0, 0, 1)">);
    </span><span style="color: rgba(0, 0, 255, 1)">if</span>(mongoClient == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
        mongoClient </span>= <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient("localhost", 27017<span style="color: rgba(0, 0, 0, 1)">);
    }        
}

}

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);
}