您的位置:首页 > 数据库 > Mongodb

Java操作Mongodb数据库

2013-09-28 00:00 447 查看
Mongodb提供Java Api来进行数据操作。使用方法很简单,在java编译路径中包含
mongo.jar文件即可,如果使用maven,直接添加mongo依赖即可。

建立连接

建立MongoDB连接,需要一个数据库名字,数据库如果不存在,mongodb会自动创建该数据库。 创建MongodClient的构造函数:
MongoClient mongoClient = new MongoClient();
MongoClient mongoClient = new MongoClient( "localhost" );
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017),
new ServerAddress("localhost", 27018),
new ServerAddress("localhost", 27019)));

DB db = mongoClient.getDB( "mydb" );
下面是个简单的例子:
package com.yeetrack.mongo.test;

import java.net.UnknownHostException;
import java.util.List;
import java.util.Set;

import org.bson.NewBSONDecoder;

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

public class MyMongodbTest
{

/**
* 学习mongodb java Driver
* @author youthflies
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException
{
//实例化一个mongod客户端
MongoClient mongoClient = new MongoClient("192.1.219.163", 27017);

//遍历全部的库
for(String string : mongoClient.getDatabaseNames())
System.out.println("mongodb数据库名字--->"+string);

//使用用户名、密码登陆
boolean auth = db.authenticate(myUserName, myPassword);
//获取数据库对象
DB db = mongoClient.getDB("mydb");

//打印mydb库中的所有数据集名字
Set<String> colls = db.getCollectionNames();
for(String s : colls)
System.out.println("库中数据集名字--->"+s);

//获得指定的数据集
DBCollection collection = db.getCollection("user");

mongoClient.setWriteConcern(WriteConcern.JOURNALED);

//插入一条数据
// {"name":"Lily", "age":"18"}
BasicDBObject basicDBObject = new BasicDBObject("name", "Lily").
append("age", "18");
//collection.insert(basicDBObject);
//再插入一条数据
//{"name":"Boss", "age":"33", "boys":{"name","boy1":
BasicDBObject basicDBObject2 = new BasicDBObject("name", "Boss").
append("age", "44").
append("kids", new BasicDBObject("name", "son").append("age", "11"));

//collection.insert(basicDBObject2);

//获取数据集中的第一条数据
DBObject myDbObject = collection.findOne();
System.out.println(myDbObject);

//使用循环向mongo中插入数据
for(int i=0;i<=4;i++)
{
//collection.insert(new BasicDBObject("name","loop").append("age", i));
}

//获取数据集中的数据个数
System.out.println("数据集中共有数据--->"+collection.getCount());

//使用游标DBCursor
DBCursor cursor = collection.find();
try
{
while(cursor.hasNext())
System.out.println(cursor.next());
} finally
{
cursor.close(); //关闭游标
}

//指定检索条件,例如 name=Lily
BasicDBObject queryBasicDBObject  = new BasicDBObject("name", "Lily");
DBCursor cursor2 = collection.find(queryBasicDBObject);

try
{
while(cursor2.hasNext())
System.out.println("检索结果--->"+cursor2.next());
} finally
{
cursor2.close();
}

//指定检索条件时,使用$高级查询
// mongodb命令:db.user.find({"name":{$ne:"Lily"},"age":{$gt:"12"}}) 查询名字不是lily,且age大于12的用户
BasicDBObject queryBasicDBObject2 = new BasicDBObject("name", new BasicDBObject("$ne", "Lily")).
append("age", new BasicDBObject("$gt", "12"));
DBCursor cursor3 = collection.find(queryBasicDBObject2);
try
{
while(cursor3.hasNext())
System.out.println("查询名字不是lily,且age大于12的用户--->"+cursor3.next());
} finally
{
cursor3.close();
}
//$ne:不等于  $gt:大于  $lt:小于   $lte:小于等于            和shell命令一致

//创建索引,1代表升序,-1代表降序
collection.createIndex(new BasicDBObject("name", 1));

//获取索引
List<DBObject> list = collection.getIndexInfo();
for(DBObject object : list)
System.out.println("索引信息--->"+object);

//删除一个库
mongoClient.dropDatabase("mydb");

mongoClient.close();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 代码 技术