Mongodb的Java操作

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB中的一条记录就是一个文档(document),里面存储了由字段和值对构成的数据结构。文档看起来很像JSON对象,字段的值可以是数组、其他文档,也可以是文档数组: { "_id" : ObjectId("54c955492b7c8eb21818bd09"), ...

MongoDB中的一条记录就是一个文档(document),里面存储了由字段和值对构成的数据结构。文档看起来很像JSON对象,字段的值可以是数组、其他文档,也可以是文档数组:

{
   "_id" : ObjectId("54c955492b7c8eb21818bd09"),
   "address" : {
      "street" : "2 Avenue",
      "zipcode" : "10075",
      "building" : "1480",
      "coord" : [ -73.9557413, 40.7720266 ],
   },
   "borough" : "Manhattan",
   "cuisine" : "Italian",
   "grades" : [
      {
         "date" : ISODate("2014-10-01T00:00:00Z"),
         "grade" : "A",
         "score" : 11
      },
      {
         "date" : ISODate("2014-01-16T00:00:00Z"),
         "grade" : "B",
         "score" : 17
      }
   ],
   "name" : "Vella",
   "restaurant_id" : "41704620"
}

 

MongoDB将文档存储在集合(collection)中,集合也就是关系型数据库的表。不过和表不一样的是,集合完全不要求内部文档必须模式一致。文档也有主键,而且名称必须是_id。你不提供它就会自动添加。

由于MongoDB的文档格式类似于JSON,所以可以从JSON文件导入数据,只要数据格式合法。比如我们把 https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/dataset.json 的内容保存起来,命名为dbset.json。我们通过下面这条命令导入这些数据到集合restaaurants中:

mongoimport --db test --collection restaurants --drop --file dbset.json

 工具是mongoimport,数据库是test,后面指定了文件源。这个工具的更详细介绍参考 https://docs.mongodb.org/manual/reference/program/mongoimport/#bin.mongoimport 。

 

通过Java操作MongoDB要用到俩jar包:Uber MongoDB Java Driver和BSON,官方给了maven集成方式:

<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>bson</artifactId>
        <version>3.0.4</version>
    </dependency>
</dependencies>

 但是我尝试了不行,只能自己下载了。

 

访问数据库的方法如下:

MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase("test");

 插入数据有四个方法:

 我们试一下第三个

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.CHINA);
		Document document = new Document("address",
				new Document("street", "avenue 2").append("zipcode", "200000").append("building", "1480").append(
						"coord",
						Arrays.asList(-73.9557413,
								40.7720266)))
										.append("borough",
												"一个省")
										.append("Country", "中国")
										.append("grades",
												Arrays.asList(new Document()
														.append("date", format.parse("2014-10-01T00:00:00Z"))
														.append("grade",
																"A")
														.append("score", 11),
												new Document().append("date", format.parse("2014-01-16T00:00:00Z"))
														.append("grade", "B").append("score", 17)))
						.append("name", "Vella").append("hotel_id", "41704620");
		database.getCollection("restaurants").insertOne(document);

 

 之后我们把数据查询一下:

FindIterable<Document> iterable = db.getCollection("restaurants").find();
iterable.forEach(new Block<Document>() {
    @Override
    public void apply(final Document document) {
        System.out.println(document);
    }
});

 可以看到多了一个_id字段。

如果想有针对性的检索,可以传入一个文档:

FindIterable<Document> iterable = db.getCollection("restaurants").find(
        new Document("borough", "哈哈哈"));

 (这个匹配失败了所以没有东西返回)

更新数据的方法也比较简单,第一个参数用来检索,第二个是新数据。

 比如:

db.getCollection("restaurants").updateOne(new Document("restaurant_id", "41156888"),
        new Document("$set", new Document("address.street", "East 31st Street")));

 将会更新address.street。

如果要改的字段太多,可以使用replaceOne

 

删除数据使用delete:

 比如

db.getCollection("restaurants").deleteMany(new Document("borough", "Manhattan"));

 全部删除的话可以

db.getCollection("restaurants").deleteMany(new Document());

 连集合都不要的话可以

db.getCollection("restaurants").drop();

 最后说一下索引的建立

db.getCollection("restaurants").createIndex(new Document("cuisine", 1));

 使用createIndex,指定为哪个字段键索引,1是升序,-1是降序。

索引相关的方法有这些:

 

目录
相关文章
|
10月前
|
NoSQL JavaScript 前端开发
Java访问MongoDB
Java访问MongoDB
154 21
|
10月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过MongoDB Atlas Data Lake或Apache Drill,可以在Java中使用SQL语法查询MongoDB数据。这两种方法都需要适当的配置和依赖库的支持。希望本文提供的示例和说明能够帮助开发者实现这一目标。
412 17
|
11月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
435 9
|
NoSQL Java 数据库连接
MongoDB Java
10月更文挑战第18天
203 3
|
存储 JSON NoSQL
Java 中MongoDB的使用
Java 中MongoDB的使用
95 2
|
Java Android开发
WSDL2Java操作指南
1. 安装JDK1.5, 配置系统环境变量:     下载安装JDK后, 设置环境变量:     JAVA_HOME=C:\Program Files\Java\jdk1.5.0_02     Path=%Path%;%JAVA_HOME%\bin(这里的%Path%指你系统已经有的一系列配置)     CLASSPATH=%JAVA_HOME%\lib  2. 下载axis,
1535 0
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
141 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
158 1
|
2月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
136 0

推荐镜像

更多
下一篇
oss云网关配置