http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7005|回复: 0

[Java] java连接mongodb进行相关操作

[复制链接]
发表于 2014-1-2 08:51:13 | 显示全部楼层 |阅读模式
使用mongoDB需要导入以下类,当然不是全部需要,用到的类就导入。
[Java] 纯文本查看 复制代码
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()将其转换回原来的类。
[Java] 纯文本查看 复制代码
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'});)
[Java] 纯文本查看 复制代码
BasicDBObject bo = new BasicDBObject(); 
bo.put('_id', 1); 
bo.put('name', 'bruce'); 
collection.insert(bo); 


权限
判断是否有mongoDB的访问权限,有就返回true,否则返回false。
[Java] 纯文本查看 复制代码
boolean auth = db.authenticate(myUserName, myPassword); 


查看mongoDB数据库列表
[Java] 纯文本查看 复制代码
Mongo m = new Mongo(); 
for (String s : m.getDatabaseNames()) { 
System.out.println(s); 
} 



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


查看一个表的索引
[Java] 纯文本查看 复制代码
List<DBObject> list = coll.getIndexInfo(); 
for (DBObject o : list) { 
System.out.println(o); 
} 


删除一个数据库
[Java] 纯文本查看 复制代码
Mongo m = new Mongo(); 
m.dropDatabase("myDatabaseName"); 


建立mongoDB的链接
[Java] 纯文本查看 复制代码
Mongo m = new Mongo("localhost", 27017); 
DB db = m.getDB("myDatabaseName"); //相当于库名 
DBCollection coll = db.getCollection("myUsersTable");//相当于表名 


#查询数据
查询第一条记录
[Java] 纯文本查看 复制代码
DBObject firstDoc = coll.findOne(); 
findOne()返回一个记录,而find()返回的是DBCursor游标对象。 

查询全部数据
[Java] 纯文本查看 复制代码
DBCursor cur = coll.find(); 
while(cur.hasNext()) { 
System.out.println(cur.next()); 
} 


查询记录数量
[Java] 纯文本查看 复制代码
coll.find().count(); 
coll.find(new BasicDBObject("age", 26)).count(); 


设置条件查询
[Java] 纯文本查看 复制代码
BasicDBObject condition = new BasicDBObject(); 
condition.put("name", "bruce"); 
condition.put("age", 26); 
coll.find(condition); 


查询部分数据块
[Java] 纯文本查看 复制代码
DBCursor cursor = coll.find().skip(0).limit(10); 
while(cursor.hasNext()) { 
System.out.println(cursor.next()); 
} 


比较查询(age > 50)
[Java] 纯文本查看 复制代码
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)); 


#插入数据
批量插入
[Java] 纯文本查看 复制代码
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); 


$exists
用来判断一个元素是否存在:
如:
[Java] 纯文本查看 复制代码
db.things.find( {a:{$exists:true}}); // 如果存在元素a,就返回true 


$type
基于 bson type来匹配一个元素的类型,像是按照类型ID来匹配,不过我没找到bson类型和id对照表。
[Java] 纯文本查看 复制代码
db.things.find({a:{$type:2}}); // matches if a is a string 


正则表达式
查询所有名字匹配 /joh?n/i 的记录
[Java] 纯文本查看 复制代码
Pattern pattern = Pattern.compile("joh?n", CASE_INSENSITIVE); 
BasicDBObject query = new BasicDBObject("name", pattern); 
DBCursor cursor = coll.find(query);


#Java代码

[Java] 纯文本查看 复制代码
package com.tmg.java;
import java.util.regex.Pattern;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
/**
 * @author duanzc
 * @date:2010-12-23 下午05:34:24
 * @version :1.0
 * @类说明:
 */
public class MyTest {
 public static void main(String[] args) {
  try {
   Mongo conn = new Mongo("127.0.0.1");     // 创建数据库连接
   
   DB local = conn.getDB("local");       // 得到数据库
   
   boolean auth = local.authenticate("doc1", "110210121".toCharArray()); // 用户验证
   
   if(auth){ // 如果用户名密码验证成功
    System.out.println("成功.......");
    DBCollection col = local.getCollection("collor"); // 获得表
    select(col);
   }
    
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 /** 查询 */
 private static void select(DBCollection col) {
  DBObject conditions = new BasicDBObject();    // 条件类
  Integer[] num = {10,99};
  
//  conditions.put("collor", "red");      // 等于
//  conditions.put("size", new BasicDBObject("$gt", 5)); // gt(>), lt(<), gte(>=), lte(<=), in(包含), nin((不包含)
//  conditions.put("size", new BasicDBObject("$gt", 5).append("$lt", 15)); // >5 and <15, (可以多个条件)
//  conditions.put("num", new BasicDBObject("$in", num)); // 无效
//  conditions.put("properties.skills", "java");   // 子查询:list
//  conditions.put("properties.age", 23);     // 子查询:map
//  DBCursor ite = col.find().skip(1).limit(2);    // 取范围
  
  DBCursor ite = col.find(conditions);   // 结果集(属性条件:无条件查询所有)
  DBCursor ite_ = col.find(new BasicDBObject // 结果集(直接条件)
     ("$where", "this.size==10")); //>, <, >=, <=, ==
  while(ite.hasNext()){
      System.out.println(ite.next());
  }
  System.out.println("............");
  
  // =========== 模糊查询:只能用正则 ============
  Pattern john = Pattern.compile("ed");     // 正则
  BasicDBObject query = new BasicDBObject("collor", john); 
  DBCursor ite2 = col.find(query);
  while(ite2.hasNext()){
      System.out.println(ite2.next());
  }
 }
}







1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-16 04:32

© 2014-2021

快速回复 返回顶部 返回列表