mongodb3.2常用操作指南-driver版

本文详细介绍MongoDB数据库的基本操作,包括连接、数据增删改查、索引创建、用户管理等核心功能,适用于初学者快速入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pom增加driver

<!-- 非OSGi 规范包 -->
<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver</artifactId>
        <version>3.4.3</version>
    </dependency>
</dependencies>
<!-- OSGi 规范包 -->
<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.4.3</version>
    </dependency>
</dependencies>

常用class

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.ServerAddress;

import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;

import org.bson.Document;
import java.util.Arrays;
import com.mongodb.Block;

import com.mongodb.client.MongoCursor;
import static com.mongodb.client.model.Filters.*;
import com.mongodb.client.result.DeleteResult;
import static com.mongodb.client.model.Updates.*;
import com.mongodb.client.result.UpdateResult;
import java.util.ArrayList;
import java.util.List;

第一步 创建客户端 四种形式

//无参
MongoClient mongoClient = new MongoClient();
//指定IP
MongoClient mongoClient = new MongoClient( "localhost" );
//指定IP+端口
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
//借助 MongoClientURI 工具
MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(connectionString);

第二步 指定连接数据库

//获取指定DB的连接
MongoDatabase database = mongoClient.getDatabase("mydb");

第三步 Collection的操作

 //指定获取 Collection 
    MongoCollection<Document> collection = database.getCollection("test");

1-新增Document 两种形式

在 Collection 新增 一条 Document

Document doc = new Document("name", "MongoDB")
                .append("type", "database")
                .append("count", 1)
                .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
                .append("info", new Document("x", 203).append("y", 102));
collection.insertOne(doc);				

在 Collection 新增 多条 Document

最大支持 maxWriteBatchSize =10W如果新增20W 则mongodb默认拆成两组 分别批量插入, 并且 排序比非排序队列插入慢

List documents = new ArrayList();
for (int i = 0; i < 100; i++) {
documents.add(new Document(“i”, i));
}
collection.insertMany(documents);

2-Collection 计数

//指定计数 Collection
System.out.println(collection.count());

3-Collection 查询

Collection 的查询-单个查询

find 不加参数 返回全部Document json形式 返回句柄是FindIterable() 方便进行链式操作
例如 find().first() 返回第一个

Collection 的查询-遍历

MongoCursor<Document> cursor = collection.find().iterator();
try {
    while (cursor.hasNext()) {
        System.out.println(cursor.next().toJson());
    }
} finally {
    cursor.close();
}

for (Document cur : collection.find()) {
    System.out.println(cur.toJson());
}

Collection 的查询-条件查询

find增加表达式以获取指定规则的结果

//返回i列值为71的记录,参数需符合 Bson 格式 常用 eq gt lt and  lte
myDoc = collection.find(eq("i", 71)).first();
System.out.println(myDoc.toJson());

或者

collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);
//嵌套查询-指 Document存储的记录中存在嵌套BSON格式的内容时 查询的方式
db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
db.inventory.find(  { size: { w: 21, h: 14, uom: "cm" } }  )
db.inventory.find( { "size.uom": "in" } )
db.inventory.find( { "size.h": { $lt: 15 } } )
db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )

4-Collection 更新

//更新单条
collection.updateOne(eq("i", 10), new Document("$set", new Document("i", 110)));

//更新多条 此时绝大多数需要指定范围 符合 Bson 规则
UpdateResult updateResult = collection.updateMany(lt("i", 100), inc("i", 100));
System.out.println(updateResult.getModifiedCount());

5-Collection 删除

//删除单条
collection.deleteOne(eq("i", 110))
//删除多条 此时绝大多数需要指定范围 符合 Bson 规则
DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
System.out.println(deleteResult.getDeletedCount());

6-创建索引

//索引是创建在 document 指定的一个或者多个field上

//在i列创建自增序列索引
collection.createIndex(new Document("i", 1));
//在i列创建自减序列索引
collection.createIndex(new Document("i", -1));

7-mongodb认证登录

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
//或者
use admin
db.auth("myUserAdmin", "abc123" )

8-创建用户

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

总结

MongoDB的三层模型 Database -Collection-Document
MongoDB 支持链式操作 可以批量操作 类型是list 不是map也不是set
可默认创建 _id 作为唯一对象标识
document 单个最大 16 megabytes

参考链接

http://mongodb.github.io/mongo-java-driver/3.4/driver/getting-started/installation/
http://mongodb.github.io/mongo-java-driver/3.4/driver/getting-started/quick-start/
https://docs.mongodb.com/manual/release-notes/3.2/#rel-notes-document-validation
https://docs.mongodb.com/manual/reference/limits/#Index-Key-Limit
https://docs.mongodb.com/manual/core/schema-validation/
https://docs.mongodb.com/v3.2/core/document/
https://docs.mongodb.com/v3.2/core/databases-and-collections/
https://docs.mongodb.com/v3.2/installation/
https://docs.mongodb.com/v3.2/introduction/
https://docs.mongodb.com/v3.2/security/
https://docs.mongodb.com/v3.2/tutorial/enable-authentication/
https://docs.mongodb.com/v3.2/reference/sql-comparison/
https://docs.mongodb.com/v3.2/crud/
https://docs.mongodb.com/v3.2/aggregation/
https://docs.mongodb.com/v3.2/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值