MongoDB Java API查询实现

最近在学习MongoDB的JAVA API,便于以后查阅,总结java中实现MongoDB查询的实现方式:

总的来讲,java api中的BasicDBObject相当于mongo命令中的大括号"{}",BasicDBList相当于中括号"[]",这样就比较容易理解下面的语句了。


1.创建连接

import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;

import java.util.Arrays;

// To directly connect to a single MongoDB server (note that this will not auto-discover the primary even
// if it's a member of a replica set:
MongoClient mongoClient = new MongoClient();
// or
MongoClient mongoClient = new MongoClient( "localhost" );
// or
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// or, to connect to a replica set, with auto-discovery of the primary, supply a seed list of members
MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017),
                                      new ServerAddress("localhost", 27018),
                                      new ServerAddress("localhost", 27019)));

DB db = mongoClient.getDB( "mydb" );

以上代码引用于MongoDB官网:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started-with-java-driver

后续的db对象参照上面的代码获取。


2. 获取全部collections的名称

Set<String> colls = db.getCollectionNames();

for (String s : colls) {
    System.out.println(s);
}

3. 获取一个collection对象

DBCollection coll = db.getCollection("testCollection");

4. 插入一条记录(Document)

文档内容:

{
   "name" : "MongoDB",
   "type" : "database",
   "count" : 1,
   "info" : {
               x : 203,
               y : 102
             }
}

java插入语句:

BasicDBObject doc = new BasicDBObject("name", "MongoDB").
                              append("type", "database").
                              append("count", 1).
                              append("info", new BasicDBObject("x", 203).append("y", 102));

coll.insert(doc);

5. 插入多条记录

for (int i=0; i < 100; i++) {
    coll.insert(new BasicDBObject("i", i));
}

6. 进行count操作

System.out.println(coll.getCount());

7. 查询collection中的第一条记录:

mongo语句:
db.mycollection.findOne() 
或者 
db.mycollection.findOne({})

java语句:
DBCollection coll = db.getCollection("testCollection");
DBObject myDoc = coll.findOne();
System.out.println(myDoc);

8. 使用游标(cursor)遍历记录

DBCursor cursor = coll.find();
try {
   while(cursor.hasNext()) {
       System.out.println(cursor.next());
   }
} finally {
   cursor.close();
}

9. 根据条件进行简单查询

java语句:
BasicDBObject queryObj = new BasicDBObject("name", "MongoDB");

cursor = coll.find(query);

try {
   while(cursor.hasNext()) {
       System.out.println(cursor.next());
   }
} finally {
   cursor.close();
}

10. 根据条件进行复杂查询

(1)数值比较$gt(大于)、$lt(小于)、$gte(大于等于)、$lte(小于等于):

Mongo语句:
db.coll.find({"age", {$gt, 10}})

java语句:
BasicDBObject queryObj = new BasicDBObject("age", new BasicDBObject("$gt", 10)); 
DBCursor cursor = coll.find(queryObj);
try {
	while (cursor.hasNext()) {
		System.out.println(cursor.next());
	}
} finally {
	cursor.close();
}
这里的BasicDBObject相当于mongo语句中的大括号"{ }"

(2)$or操作:

Mongo语句:
db.coll.find({$or, [{"age", 10}, {"age", 15}]})

Java语句:
BasicDBList options = new BasicDBList();
		options.add(new BasicDBObject("age", 10));
		options.add(new BasicDBObject("age", 15));
		DBObject queryObj = new BasicDBObject("$or", options);
DBCursor cursor = coll.find(queryObj);
try {
	while (cursor.hasNext()) {
		System.out.println(cursor.next());
	}
} finally {
	cursor.close();
}
这里的BasicDBList相当于mongo语句中的中括号"[ ]"。


简单总结到这里,如有错误,欢迎批评指正~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值