[mongodb]java操作mongodb

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:
使用mongoDB需要导入以下类,当然不是全部需要,用到的类就导入。  
import com.mongodb.Mongo;  
import com.mongodb.DB;  
import com.mongodb.DBCollection;  
import com.mongodb.BasicDBObject;  
import com.mongodb.DBObject;  
import com.mongodb.DBCursor;  
import com.mongodb.ObjectId;  

类转换  
当把一个类对象存到mongoDB后,从mongoDB取出来时使用setObjectClass()将其转换回原来的类。  
public class Tweet implements DBObject {  
    /* ... */  
}  
Tweet myTweet = new Tweet();  
myTweet.put("user", "bruce");  
myTweet.put("message", "fun");  
myTweet.put("date", new Date());  
collection.insert(myTweet);  
//转换  
collection.setObjectClass(Tweet);  
Tweet myTweet = (Tweet)collection.findOne();  

默认ID  
当保存的对象没有设置ID时,mongoDB会默认给该条记录设置一个ID("_id")。  
当然你也可以设置自己指定的ID,如:(在mongoDB中执行用db.users.save({_id:1,name:'bruce'});)  
BasicDBObject bo = new BasicDBObject();  
bo.put('_id', 1);  
bo.put('name', 'bruce');  
collection.insert(bo);  

权限  
判断是否有mongoDB的访问权限,有就返回true,否则返回false。  
boolean auth = db.authenticate(myUserName, myPassword);  

查看mongoDB数据库列表  
Mongo m = new Mongo();  
for (String s : m.getDatabaseNames()) {  
System.out.println(s);  
}  


查看当前库下所有的表名,等于在mongoDB中执行show tables;  
Set<String> colls = db.getCollectionNames();  
for (String s : colls) {  
System.out.println(s);  
}  

查看一个表的索引  
List<DBObject> list = coll.getIndexInfo();  
for (DBObject o : list) {  
System.out.println(o);  
}  

删除一个数据库  
Mongo m = new Mongo();  
m.dropDatabase("myDatabaseName");  

建立mongoDB的链接  
Mongo m = new Mongo("localhost", 27017);  
DB db = m.getDB("myDatabaseName"); //相当于库名  
DBCollection coll = db.getCollection("myUsersTable");//相当于表名  

#查询数据  
查询第一条记录  
DBObject firstDoc = coll.findOne();  
findOne()返回一个记录,而find()返回的是DBCursor游标对象。  

查询全部数据  
DBCursor cur = coll.find();  
while(cur.hasNext()) {  
System.out.println(cur.next());  
}  

查询记录数量  
coll.find().count();  
coll.find(new BasicDBObject("age", 26)).count();  

设置条件查询  
BasicDBObject condition = new BasicDBObject();  
condition.put("name", "bruce");  
condition.put("age", 26);  
coll.find(condition);  

查询部分数据块  
DBCursor cursor = coll.find().skip(0).limit(10);  
while(cursor.hasNext()) {  
System.out.println(cursor.next());  
}  

比较查询(age > 50)  
BasicDBObject condition = new BasicDBObject();  
condition.put("age", new BasicDBObject("$gt", 50));  
coll.find(condition);  
比较符  
"$gt": 大于  
"$gte":大于等于  
"$lt": 小于  
"$lte":小于等于  
"$in": 包含  
//以下条件查询20<age<=30  
condition.put("age", new BasicDBObject("$gt", 20).append("$lte", 30));  

#插入数据  
批量插入  
List datas = new ArrayList();  
for (int i=0; i < 100; i++) {  
BasicDBObject bo = new BasicDBObject();  
bo.put("name", "bruce");  
bo.append("age", i);  
datas.add(bo);  
}  
coll.insert(datas);  

正则表达式  
查询所有名字匹配 /joh?n/i 的记录  
Pattern pattern = Pattern.compile("joh?n", CASE_INSENSITIVE);  
BasicDBObject query = new BasicDBObject("name", pattern);  
DBCursor cursor = coll.find(query);
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
12天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
26 0
|
12天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(&lt;https://www.sojump.com/m/2792226.aspx/&gt;)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
24 0
|
2天前
|
Java API
Java操作elasticsearch
Java操作elasticsearch
7 0
|
2天前
|
NoSQL Java Redis
在Java中操作Redis
在Java中操作Redis
6 0
|
2天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
2天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
2天前
|
Java Android开发
java利用xml-rpc协议操作wordpress博客
java利用xml-rpc协议操作wordpress博客
|
4天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
9 0
|
10天前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
13 2
|
12天前
|
存储 NoSQL 安全
java 中通过 Lettuce 来操作 Redis
java 中通过 Lettuce 来操作 Redis
java 中通过 Lettuce 来操作 Redis