MongoDB插入文档
文档的格式:
-
文档的数据结构和 JSON 基本一样。
-
所有存储在集合中的数据都是 BSON 格式。
-
BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。
方法:
-
insert()--->若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException (sprintboot框架的异常)异常,提示主键重复,不保存当前数据。
-
save()--->该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
语法:
db.collection.insertOne(
<document>,
{
writeConcern:<document>
}
)
/*
用于向集合插入一个新文档
*/
db.teacher.insertOne(
{title:'MongoDB教程',
description:'This is a NoSQL',
by:'JunkingBoy',
tags:['mongodb','database','NoSQL']
})
db.collection.insertMany(
[<document1>,<document2>,...]
{
writeConcern:<document>,
ordered:<boolean>
}
)
db.teacher.insertMany([
{title:'MongoDB教程',
description:'This is a NoSQL',
by:'JunkingBoy',
tags:['mongodb','database','NoSQL']},
{title:'MongoDB教程',
description:'This is a NoSQL',
by:'LuciferOfLive',
tags:['mongodb','database','NoSQL']}])
/*
将数据定义为一个变量
利用变量插入
*/
document=(
{title:'MongoDB教程',
by:'Lucifer',
tags:['mongodb','database','NoSQL'],
likes:100}
)
db.teacher.insertOne(document)
插入文档你也可以使用 db.collection.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
参数说明:
-
document:要写入的文档。
-
writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
-
ordered:指定是否按顺序写入,默认 true,按顺序写入。--->进程写入还是方法写入
Java连接MongoDB插入文档
因为MongoDB以文档的形式存储数据。文档的数据结构和 JSON 基本一样。对应到Java中则是用List列表的方式进行添加
package mongodbtest;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
/**
* 使用MongoDB连接到服务器环境上
* @since JDK 1.8
* @date 0221/6/29
* @author Lucifer
*/
public class mongoconnection {
/*配置属性*/
private static final String MONGO_HOST = "localhost";
// private static final Integer MONGO_PORT = 27037;
private static final Integer MONGO_PORT = 27017;
// private static final String MONGO_USER = "admin";
// private static final String MONGO_PASSWORD = "r123456";
private static final String MONGO_DB_NAME = "practice";
private static final String GATHER_NAME = "teacher";
private static final String GATHER_NAME2 = "demo";
public static void getConnection(){
/*用事务连接到远程的MongoDB服务器上*/
try {
/*使用java包下的类构造一个连接对象*/
ServerAddress serverAddress = new ServerAddress(MONGO_HOST, MONGO_PORT);
/*集群连接方法--->构造列表*/
List<ServerAddress> addresses = new ArrayList<ServerAddress>();
addresses.add(serverAddress);
// /*使用Mongo包下的类MongoCredential建立连接对象*/
// //三个参数:用户名、数据库名称、密码
// MongoCredential credential = MongoCredential.createScramSha1Credential(MONGO_USER,
// MONGO_DB_NAME,
// MONGO_PASSWORD.toCharArray()); //最后一个形参需要转换成字符类型而不是字符串类型,使用toCharArray方法
// /*集群连接方法--->构造列表*/
// List<MongoCredential> credentials = new ArrayList<MongoCredential>();
// credentials.add(credential);
/*通过连接认证MongoDB连接--->使用MongoDBClient类下的方法*/
MongoClient mongoClient = new MongoClient(addresses); //放入列表对象
System.out.println("Connect to database successfully!");
/*连接到数据库*/
MongoDatabase mongoDatabase = mongoClient.getDatabase(MONGO_DB_NAME);
// mongoDatabase.createCollection(GATHER_NAME2);
// System.out.println("create gather successfully!");
/*通过MongoCollection接口获取到集合*/
MongoCollection<Document> collection = mongoDatabase.getCollection(GATHER_NAME);
System.out.println("获取集合成功");
//插入文档
/*
1、创建文档--->org.bson.Document(对应到MongoDB的文档数据类型).参数为key-value格式
2、创建文档集合(List集合)
3、将文档集合插入数据库集合中--->集合插入集合 mongoCollection.insertMany(List<Document>)
插入单个文档可以用 mongoCollection.insertOne(Document)