1、Java 应用示例
要使用Java操作MongoDB的话,要到官方网站下载一个驱动包,点击网站上的Drivers里面,可以看到目前支持的语言,非常的多……把包导入后,可以尝试来操作了(记得一定要开着服务器)
首先介绍一下比较常用的几个类
Mongo
:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等
DB
:对应一个数据库,可以用来建立集合等操作
DBCollection
:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等
DBObjec
:接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,因为是key-value的数据结构,所以用起来其实和HashMap是基本一致的
DBCursor
:用来遍历取得的数据,实现了Iterable和Iterator
接下来实际的操作一下,代码如下:
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>90结果为:"
);
while
(
cur
.hasNext()) {
System.
out
.println(
cur
.next());
}
System.
out
.println(
"查找i>90结束!"
);
System.
out
.println(
"-------------华丽分隔线----------------------"
);
/**
*
which
should
print
the
documents
where
i
>
50.
*
We
could
also
get
a
range,
say
20
< i <= 30 :
*/
query =
new
BasicDBObject();
query.put(
"i"
,
new
BasicDBObject(
"$gt"
, 20).append(
"$lte"
, 25));
// i.e. 20 < i <= 30
cur
= coll.find(query);
System.
out
.println(
"查找20 < i <= 25结果为:"
);
while
(
cur
.hasNext()) {
System.
out
.println(
cur
.next());
}
System.
out
.println(
"查找20 < i <= 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<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!"
);
}
}
本文转自jooben 51CTO博客,原文链接:http://blog.51cto.com/jooben/350740