MongoDB java编程快速入门

使用Java对MongoDB进行编程,首先要下载驱动包,并导入到项目中,地址如下:

https://github.com/mongodb/mongo-java-driver/downloads

其基本操作如下:

 

导入包:
import com.mongodb.Mongo;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;

 

创建连接:
Mongo m = new Mongo();
Mongo m = new Mongo( "localhost" );
Mongo m = new Mongo( "localhost" , 27017 );

 

创建一个数据库:
DB db = m.getDB( "mydb" );

验证用户名密码:
boolean auth = db.authenticate(myUserName, myPassword);

获得集合(类似于表)列表,显示所有集合的名称:
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
    System.out.println(s);
}

创建一个集合:
DBCollection coll = db.getCollection("testCollection");

插入一条记录:
如果插入的内容如下:
{
   "name" : "MongoDB",
   "type" : "database",
   "count" : 1,
   "info" : {
               x : 203,
               y : 102
             }
}
则代码如下:
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);

使用findOne()在一个集合中找到第一条记录:
DBObject myDoc = coll.findOne();
System.out.println(myDoc);
由此打印的内容将如下(假设添加了上文中的记录):
{ "_id" : "49902cde5162504500b45c2c" , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" :

102} , "_ns" : "testCollection"}
注意:_id和_ns的内容被自动的添加到了记录中。

添加多条记录:
如果要添加的内容如下:
{
   "i" : value
}
则所需要的代码如下:
for (int i=0; i < 100; i++) {
    coll.insert(new BasicDBObject().append("i", i));
}
注意:在Mongo里边,可以添加不同形式的数据到同一个集合(表)中,这就是所谓的模式自由(schema-free)。


获得一个集合中记录的条数:
System.out.println(coll.getCount());

使用Cursor(光标?)获得所有记录:
DBCursor cur = coll.find();

 while(cur.hasNext()) {
     System.out.println(cur.next());
 }

通过查询获得一条单独的记录:
例如,如果想获得i值为71的记录:
BasicDBObject query = new BasicDBObject();
query.put("i", 71);
cur = coll.find(query);
while(cur.hasNext()) {
   System.out.println(cur.next());
}
这样将打印如下内容:
{ "_id" : "49903677516250c1008d624e" , "i" : 71 , "_ns" : "testCollection"}
也可以使用简化的方法查看:
db.things.find({j: {$ne: 3}, k: {$gt: 10} });
相当于如下代码:
BasicDBObject query = new BasicDBObject();
query.put("j", new BasicDBObject("$ne", 3));
query.put("k", new BasicDBObject("$gt", 10));       
cur = coll.find(query);
while(cur.hasNext()) {
    System.out.println(cur.next());
}

通过查询获得一系列记录:
例如要获得i值大于50的所有记录:
query = new BasicDBObject();
query.put("i", new BasicDBObject("$gt", 50));  // e.g. find all where i > 50
cur = coll.find(query);
while(cur.hasNext()) {
    System.out.println(cur.next());
}
如果要查询i值大于20小于等于30的记录:($gt表示大于,$lte表示小于等于,具体标号可自行查询)
query = new BasicDBObject();
query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));  // i.e.   20 < i <= 30
cur = coll.find(query);
 while(cur.hasNext()) {
       System.out.println(cur.next());
 }

创建一个索引(index):
coll.createIndex(new BasicDBObject("i", 1));  // create index on "i", ascending
如此,则创建了一个按照i降序排列的索引,1代表升序,-1代表降序。

获得一个集合中索引的列表:
List<DBObject> list = coll.getIndexInfo();
   for (DBObject o : list) {
       System.out.println(o);
   }
如此,怎输出结果如下:
{ "name" : "i_1" , "ns" : "mydb.testCollection" , "key" : { "i" : 1} , "_ns" : "system.indexes"}

获得数据库的列表:
Mongo m = new Mongo();
  for (String s : m.getDatabaseNames()) {
        System.out.println(s);
  }

丢弃一个数据库:
使用Mongo对象可以丢弃一个数据库:
m.dropDatabase("my_new_db");

 

以上翻译或者表达上的问题还请大家指正。

by 雪洁 2011-08-06 17:56:06 3784 views
我来说几句

相关文章