第三章 MongoDb Java应用 3.1

本文介绍如何使用Java操作MongoDB数据库,包括连接服务器、创建数据库及集合、插入查询文档等基本操作,并演示了索引创建及使用游标获取数据的方法。
1Java 应用示例
要使用Java操作MongoDB的话,要到官方网站下载一个驱动包,点击网站上的Drivers里面,可以看到目前支持的语言,非常的多……把包导入后,可以尝试来操作了(记得一定要开着服务器)
首先介绍一下比较常用的几个类
Mongo:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等
DB:对应一个数据库,可以用来建立集合等操作
DBCollection:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等
DBObjec:接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,因为是key-value的数据结构,所以用起来其实和HashMap是基本一致的
DBCursor:用来遍历取得的数据,实现了IterableIterator
接下来实际的操作一下,代码如下:
import java.net.UnknownHostException;
import java.util.List;
import java.util.Set;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
public class MongoDbTest {
  public static void main(String[] args) throws UnknownHostException, MongoException {
    //Mongo m = new Mongo();
    //Mongo m = new Mongo("localhost");
    Mongo m = new Mongo("localhost", 27017);
    DB db = m.getDB("mytest");
    Set<String> colls = db.getCollectionNames();
    for (String s : colls) {
        System.out.println(s);
    }
    DBCollection coll = db.getCollection("testCollection");
    BasicDBObject doc = new BasicDBObject();
   
    doc.put("name""MongoDB");
    doc.put("type""database");
    doc.put("count", 1);
    BasicDBObject info = new BasicDBObject();
    info.put("x", 203);
    info.put("y", 102);
    doc.put("info", info);
    coll.insert(doc);
    DBObject myDoc = coll.findOne();
    System.out.println(myDoc);
   
    //Adding Multiple Documents
    for (int i=0; i < 100; i++) {
      coll.insert(new BasicDBObject().append("i", i));
    }
   
   
    //Counting Documents in A Collection
    System.out.println(coll.getCount());
   
    //Using a Cursor to Get All the Documents
    DBCursor cur = coll.find();
    while(cur.hasNext()) {
        System.out.println(cur.next());
    }
   
    System.out.println("-------------华丽分隔线----------------------");
    //Getting A Single Document with A Query
    BasicDBObject query = new BasicDBObject();
    query.put("i", 71);
    cur = coll.find(query);   
    System.out.println("查找i=71结果为:");
    while(cur.hasNext()) {
        System.out.println(cur.next());
    }
    System.out.println("查找i=71结束!");
   
    System.out.println("-------------华丽分隔线----------------------");
    query = new BasicDBObject();
    query.put("i"new BasicDBObject("$gt", 90));  // e.g. find all where i > 50
    cur = coll.find(query);
    System.out.println("查找i&gt;90结果为:");
    while(cur.hasNext()) {
        System.out.println(cur.next());
    }
    System.out.println("查找i&gt;90结束!");
   
    System.out.println("-------------华丽分隔线----------------------");
    /**
     * which should print the documents where i &gt; 50. 
     * We could also get a range, say 20 < i &lt;= 30 :
     */
    query = new BasicDBObject();
    query.put("i"new BasicDBObject("$gt", 20).append("$lte", 25));  // i.e.   20 &lt; i &lt;= 30
    cur = coll.find(query);
    System.out.println("查找20 &lt; i &lt;= 25结果为:");
    while(cur.hasNext()) {
        System.out.println(cur.next());
    }
    System.out.println("查找20 &lt; i &lt;= 25结束!");
    System.out.println("-------------华丽分隔线----------------------");
    //Creating An Index
    coll.createIndex(new BasicDBObject("i", 1));  // create index on "i", ascending
    //Getting a List of Indexes on a Collection
    List&lt;DBObject> list = coll.getIndexInfo();
    System.out.println("Getting a List of Indexes on a Collection start...");
    for (DBObject o : list) {
        System.out.println(o);
    }
    System.out.println("Getting a List of Indexes on a Collection end!");
   
    System.out.println("-------------华丽分隔线----------------------");
    System.out.println("Getting A List of Databases start...");
    for (String s : m.getDatabaseNames()) {
      System.out.println(s);
    }
    System.out.println("Getting A List of Databases end");
    System.out.println("-------------华丽分隔线----------------------");
    System.out.println("Dropping A Database start...");
    //m.dropDatabase("my_new_db");
    System.out.println("Dropping A Database end!");
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值