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

Java mongoDB 基本操作入门

2015-12-25 10:19 911 查看
下载:https://www.mongodb.org/downloads

多版本下载:https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl

http://downloads.mongodb.org/win32/mongodb-win32-x86_64-latest.zip

http://docs.mongodb.org/manual/

8天学通MongoDB

启动数据库:

./bin/mongod --dbpath=data

mongo shell访问数据库

bin/mongo

http查看数据库:
http://192.168.1.132:27017/
基本操作:

插入:

db.person.insert({"name":"jack","age":20});

db.person.insert({"name":"joe","age":25});

db.person.insert({"name":"java","age":23});

查找:

db.person.find();

db.person.find({"name":"java"});

db.person.find({"age":23});

更新

db.person.update({"name":"java"},{"name":"java_name","age":1024});

删除:

db.person.remove({"name":"java_name"});

readme文档:

[html]
view plaincopyprint?

COMPONENTS bin/mongod - The database process. bin/mongos - Sharding controller. bin/mongo - The database shell (uses interactive javascript). UTILITIES bin/mongodump - MongoDB dump tool - for backups, snapshots, etc.. bin/mongorestore - MongoDB restore a dump bin/mongoexport - Export a single collection to test (JSON, CSV) bin/mongoimport - Import from JSON or CSV bin/mongofiles - Utility for putting and getting files from MongoDB GridFS bin/mongostat - Show performance statistics RUNNING For command line options invoke: $ ./mongod --help To run a single server database: $ mkdir /data/db $ ./mongod $ $ # The mongo javascript shell connects to localhost and test database by default: $ ./mongo > help DRIVERS Client drivers for most programming languages are available at mongodb.org. Use the shell ("mongo") for administrative tasks. BIT BUILD NOTES MongoDB uses memory mapped files. If built as a 32 bit executable, you will not be able to work with large (multi-gigabyte) databases. However, 32 bit builds work fine with small development databases.

COMPONENTS

bin/mongod - The database process.

bin/mongos - Sharding controller.

bin/mongo  - The database shell (uses interactive javascript).
UTILITIES
bin/mongodump         - MongoDB dump tool - for backups, snapshots, etc..
bin/mongorestore      - MongoDB restore a dump
bin/mongoexport       - Export a single collection to test (JSON, CSV)
bin/mongoimport       - Import from JSON or CSV
bin/mongofiles        - Utility for putting and getting files from MongoDB GridFS
bin/mongostat         - Show performance statistics
RUNNING

For command line options invoke:

$ ./mongod --help

To run a single server database:

$ mkdir /data/db

$ ./mongod

$

$ # The mongo javascript shell connects to localhost and test database by default:

$ ./mongo

> help

DRIVERS

Client drivers for most programming languages are available at mongodb.org.  Use the
shell ("mongo") for administrative tasks.

BIT BUILD NOTES

MongoDB uses memory mapped files.  If built as a 32 bit executable, you will

not be able to work with large (multi-gigabyte) databases.  However, 32 bit

builds work fine with small development databases.
Java 操作mongodb例子:
在本示例之前你需要启动mongod.exe的服务,启动后,下面的程序才能顺利执行;

1、 建立SimpleTest.java,完成简单的mongoDB数据库操作

Mongo mongo = new Mongo();

这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。

DB db = mongo.getDB(“test”);

这样就获得了一个test的数据库,如果mongoDB中没有创建这个数据库也是可以正常运行的。如果你读过上一篇文章就知道,mongoDB可以在没有创建这个数据库的情况下,完成数据的添加操作。当添加的时候,没有这个库,mongoDB会自动创建当前数据库。

得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。

DBCollection users = db.getCollection("users");

这样就获得了一个DBCollection,它相当于我们数据库的“表”。

[java]
view plaincopyprint?

package com.jiepu.mongodb;

import java.util.Set;

import org.bson.Document;

import com.alibaba.fastjson.JSON;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.result.UpdateResult;

/**
* Hello world!
*
*/
public class App {
//private static String ip="192.168.1.132";
private static String ip="127.0.0.1";
private static int port=27017;
public static void main(String[] args) {

test001();
//test002();
//test003();

System.out.println("Hello World!");

}

private static void test003() {
System.out.println("============");
Mongo mg = new Mongo(ip, port);

System.out.println(mg.getDatabaseNames());

DB db = mg.getDB("test");

Set<String> collectionNames = db.getCollectionNames();
for (String string : collectionNames) {
System.out.println(string);
}
// db游标
DBCollection dbCollection = db.getCollection("person");

DBCursor cur = dbCollection.find();
while (cur.hasNext()) {
System.out.println(cur.next());
}

}

private static void test001() {

System.out.println("======新版本api======");
MongoClient mongoClient = new MongoClient(ip, port);

System.out.println("数据库:"+mongoClient.getDatabaseNames());

MongoDatabase database = mongoClient.getDatabase("test");

MongoIterable<String> names=database.listCollectionNames();
for (String string : names) {

System.out.println("数据库表:"+string);
}
MongoCollection<Document> collections = database
.getCollection("person");
//清空表
collections.drop();
/*
FindIterable<Document> findIterable = collections.find();
for (Document document : findIterable) {
System.out.println(document);
}*/

collections.createIndex(new BasicDBObject("name",1));//1代表升序

for(int i=0;i<15;i++)
{
Document cDocument=new Document();
cDocument.put("name", "data"+i);
cDocument.put("age", 32+i);
//add
collections.insertOne(cDocument);
}
//delete
collections.deleteOne(new BasicDBObject("name","data2"));
collections.deleteMany(new BasicDBObject("name","data3"));
int count=0;
for (Document document : collections.find()) {
System.out.println(document);
count++;
}
System.out.println("count="+count);

System.out.println("find ");

//find
for (Document document : collections.find(new BasicDBObject("age",33)))
{
System.out.println(document.toJson());

}

//Document updateDocument=new Document("name","fuck");

//edit

//UpdateResult updateResult=collections.updateOne(new Document("name","data14"), new Document("name","nishizhu你是猪啊").append("age", 1024));

//UpdateResult updateResult=collections.updateMany(new BasicDBObject("age","34"), new Document("name","fuck").append("age", 1024));
//System.out.println(JSON.toJSONString(updateResult));

//find
for (Document document : collections.find(new BasicDBObject("age",1024)))
{
System.out.println(document.toJson());

}

//collections.createIndex(builder.get());

mongoClient.close();

}

private static void test002() {
System.out.println("=====旧版本api=======");

MongoClient mongoClient = new MongoClient(ip, port);

System.out.println("数据库:"+mongoClient.getDatabaseNames());

DB db = mongoClient.getDB("test");
Set<String> collectionNames = db.getCollectionNames();
for (String tablename : collectionNames) {
System.out.println("表:"+tablename);
}
// db游标
DBCollection dbCollection = db.getCollection("person2");
dbCollection.drop();
for(int i=0;i<15;i++)
{
BasicDBObject cDocument=new BasicDBObject();
cDocument.put("name", "data"+i);
cDocument.put("age", 32+i);
//add
dbCollection.insert(cDocument);

}
DBCursor cur = dbCollection.find();
System.out.println("count="+cur.count());
while (cur.hasNext()) {
DBObject dbObject=cur.next();
System.out.println(dbObject);
}

dbCollection.remove(new BasicDBObject("name","data13"));
dbCollection.update(new BasicDBObject("name","data14"), new BasicDBObject("name","nishizhu你是猪啊").append("age", 1024));

cur = dbCollection.find();
System.out.println("count="+cur.count());
while (cur.hasNext()) {
System.out.println(cur.next());
}
}
}

package com.jiepu.mongodb;

import java.util.Set;

import org.bson.Document;

import com.alibaba.fastjson.JSON;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.result.UpdateResult;

/**
* Hello world!
*
*/
public class App {
//private static String ip="192.168.1.132";
private static String ip="127.0.0.1";
private static int port=27017;
public static void main(String[] args) {

test001();
//test002();
//test003();

System.out.println("Hello World!");

}

private static void test003() {
System.out.println("============");
Mongo mg = new Mongo(ip, port);

System.out.println(mg.getDatabaseNames());

DB db = mg.getDB("test");

Set<String> collectionNames = db.getCollectionNames();
for (String string : collectionNames) {
System.out.println(string);
}
// db游标
DBCollection dbCollection = db.getCollection("person");

DBCursor cur = dbCollection.find();
while (cur.hasNext()) {
System.out.println(cur.next());
}

}

private static void test001() {

System.out.println("======新版本api======");
MongoClient mongoClient = new MongoClient(ip, port);

System.out.println("数据库:"+mongoClient.getDatabaseNames());

MongoDatabase database = mongoClient.getDatabase("test");

MongoIterable<String> names=database.listCollectionNames();
for (String string : names) {

System.out.println("数据库表:"+string);
}
MongoCollection<Document> collections = database
.getCollection("person");
//清空表
collections.drop();
/*
FindIterable<Document> findIterable = collections.find();
for (Document document : findIterable) {
System.out.println(document);
}*/

collections.createIndex(new BasicDBObject("name",1));//1代表升序

for(int i=0;i<15;i++)
{
Document cDocument=new Document();
cDocument.put("name", "data"+i);
cDocument.put("age", 32+i);
//add
collections.insertOne(cDocument);
}
//delete
collections.deleteOne(new BasicDBObject("name","data2"));
collections.deleteMany(new BasicDBObject("name","data3"));
int count=0;
for (Document document : collections.find()) {
System.out.println(document);
count++;
}
System.out.println("count="+count);

System.out.println("find ");

//find
for (Document document : collections.find(new BasicDBObject("age",33)))
{
System.out.println(document.toJson());

}

//Document updateDocument=new Document("name","fuck");

//edit

//UpdateResult updateResult=collections.updateOne(new Document("name","data14"), new Document("name","nishizhu你是猪啊").append("age", 1024));

//UpdateResult updateResult=collections.updateMany(new BasicDBObject("age","34"), new Document("name","fuck").append("age", 1024));
//System.out.println(JSON.toJSONString(updateResult));

//find
for (Document document : collections.find(new BasicDBObject("age",1024)))
{
System.out.println(document.toJson());

}

//collections.createIndex(builder.get());

mongoClient.close();

}

private static void test002() {
System.out.println("=====旧版本api=======");

MongoClient mongoClient = new MongoClient(ip, port);

System.out.println("数据库:"+mongoClient.getDatabaseNames());

DB db = mongoClient.getDB("test");
Set<String> collectionNames = db.getCollectionNames();
for (String tablename : collectionNames) {
System.out.println("表:"+tablename);
}
// db游标
DBCollection dbCollection = db.getCollection("person2");
dbCollection.drop();
for(int i=0;i<15;i++)
{
BasicDBObject cDocument=new BasicDBObject();
cDocument.put("name", "data"+i);
cDocument.put("age", 32+i);
//add
dbCollection.insert(cDocument);

}
DBCursor cur = dbCollection.find();
System.out.println("count="+cur.count());
while (cur.hasNext()) {
DBObject dbObject=cur.next();
System.out.println(dbObject);
}

dbCollection.remove(new BasicDBObject("name","data13"));
dbCollection.update(new BasicDBObject("name","data14"), new BasicDBObject("name","nishizhu你是猪啊").append("age", 1024));

cur = dbCollection.find();
System.out.println("count="+cur.count());
while (cur.hasNext()) {
System.out.println(cur.next());
}
}
}


[java]
view plaincopyprint?

package com.jiepu.mongodb;

import java.net.UnknownHostException;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.junit.Test;

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.util.JSON;

public class TestMongoDriver {

@Test
public void testCRUD() throws UnknownHostException {
// 连接到mongodb
Mongo mongo = new Mongo("192.168.1.132", 27017);

// 打开数据库test
DB db = mongo.getDB("test");

// 遍历所有集合的名字
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
// 先删除所有Collection(类似于关系数据库中的"表")
if (!s.equals("system.indexes")) {
db.getCollection(s).drop();
}
}

// 取得集合emp(若:emp不存在,mongodb将自动创建该集合)
DBCollection coll = db.getCollection("emp");

// delete all
DBCursor dbCursor = coll.find();
for (DBObject dbObject : dbCursor) {
coll.remove(dbObject);
}

// create
BasicDBObject doc = new BasicDBObject("name", "杨俊明").append("sex", "男")
.append("address",
new BasicDBObject("postcode", "201202").append(
"street", "田林路888号").append("city", "上海"));
coll.insert(doc);

// retrieve
BasicDBObject docFind = new BasicDBObject("name", "杨俊明");
DBObject findResult = coll.findOne(docFind);
System.out.println(findResult);

// update
doc.put("sex", "MALE");// 把sex属性从"男",改成"MALE"
coll.update(docFind, doc);
findResult = coll.findOne(docFind);
System.out.println(findResult);

coll.dropIndexes();// 先删除所有索引
// create index
coll.createIndex(new BasicDBObject("name", 1)); // 1代表升序

// 复杂对象
UserData userData = new UserData("jimmy", "123456");
Set<String> pets = new HashSet<String>();
pets.add("cat");
pets.add("dog");
Map<String, String> favoriteMovies = new HashMap<String, String>();
favoriteMovies.put("dragons", "Dragons II");
favoriteMovies.put("avator", "Avator I");
userData.setFavoriteMovies(favoriteMovies);
userData.setPets(pets);
userData.setBirthday(getDate(1990, 5, 1));
BasicDBObject objUser = new BasicDBObject("key", "jimmy").append(
"value", toDBObject(userData));
coll.insert(objUser);
System.out.println(coll.findOne(objUser));
}

/**
* 将普通Object对象转换成mongodb的DBObject对象
*
* @param obj
* @return
*/
private DBObject toDBObject(Object obj) {
String json = com.alibaba.fastjson.JSON.toJSONString(obj);
return (DBObject) JSON.parse(json);
}

/**
* 获取指定日期
*
* @param year
* @param month
* @param day
* @return
*/
private Date getDate(int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(year, month - 1, day);
return calendar.getTime();

}

}

package com.jiepu.mongodb;

import java.net.UnknownHostException;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.junit.Test;

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.util.JSON;

public class TestMongoDriver {

@Test
public void testCRUD() throws UnknownHostException {
// 连接到mongodb
Mongo mongo = new Mongo("192.168.1.132", 27017);

// 打开数据库test
DB db = mongo.getDB("test");

// 遍历所有集合的名字
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
// 先删除所有Collection(类似于关系数据库中的"表")
if (!s.equals("system.indexes")) {
db.getCollection(s).drop();
}
}

// 取得集合emp(若:emp不存在,mongodb将自动创建该集合)
DBCollection coll = db.getCollection("emp");

// delete all
DBCursor dbCursor = coll.find();
for (DBObject dbObject : dbCursor) {
coll.remove(dbObject);
}

// create
BasicDBObject doc = new BasicDBObject("name", "杨俊明").append("sex", "男")
.append("address",
new BasicDBObject("postcode", "201202").append(
"street", "田林路888号").append("city", "上海"));
coll.insert(doc);

// retrieve
BasicDBObject docFind = new BasicDBObject("name", "杨俊明");
DBObject findResult = coll.findOne(docFind);
System.out.println(findResult);

// update
doc.put("sex", "MALE");// 把sex属性从"男",改成"MALE"
coll.update(docFind, doc);
findResult = coll.findOne(docFind);
System.out.println(findResult);

coll.dropIndexes();// 先删除所有索引
// create index
coll.createIndex(new BasicDBObject("name", 1)); // 1代表升序

// 复杂对象
UserData userData = new UserData("jimmy", "123456");
Set<String> pets = new HashSet<String>();
pets.add("cat");
pets.add("dog");
Map<String, String> favoriteMovies = new HashMap<String, String>();
favoriteMovies.put("dragons", "Dragons II");
favoriteMovies.put("avator", "Avator I");
userData.setFavoriteMovies(favoriteMovies);
userData.setPets(pets);
userData.setBirthday(getDate(1990, 5, 1));
BasicDBObject objUser = new BasicDBObject("key", "jimmy").append(
"value", toDBObject(userData));
coll.insert(objUser);
System.out.println(coll.findOne(objUser));
}

/**
* 将普通Object对象转换成mongodb的DBObject对象
*
* @param obj
* @return
*/
private DBObject toDBObject(Object obj) {
String json = com.alibaba.fastjson.JSON.toJSONString(obj);
return (DBObject) JSON.parse(json);
}

/**
* 获取指定日期
*
* @param year
* @param month
* @param day
* @return
*/
private Date getDate(int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(year, month - 1, day);
return calendar.getTime();

}

}


[java]
view plaincopyprint?

package com.jiepu.mongodb; import java.io.Serializable; import java.util.Date; import java.util.Map; import java.util.Set; public class UserData implements Serializable { private static final long serialVersionUID = -4770493237851400594L; private String userName; private String password; private Set<String> pets; private Map<String, String> favoriteMovies; private Date birthday; public UserData() { } public UserData(String userName, String passWord) { this.userName = userName; this.password = passWord; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Set<String> getPets() { return pets; } public void setPets(Set<String> pets) { this.pets = pets; } public Map<String, String> getFavoriteMovies() { return favoriteMovies; } public void setFavoriteMovies(Map<String, String> favoriteMovies) { this.favoriteMovies = favoriteMovies; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }

package com.jiepu.mongodb;

import java.io.Serializable;
import java.util.Date;
import java.util.Map;
import java.util.Set;

public class UserData implements Serializable {

private static final long serialVersionUID = -4770493237851400594L;
private String userName;
private String password;
private Set<String> pets;
private Map<String, String> favoriteMovies;
private Date birthday;

public UserData() {
}

public UserData(String userName, String passWord) {
this.userName = userName;
this.password = passWord;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public Set<String> getPets() {
return pets;
}

public void setPets(Set<String> pets) {
this.pets = pets;
}

public Map<String, String> getFavoriteMovies() {
return favoriteMovies;
}

public void setFavoriteMovies(Map<String, String> favoriteMovies) {
this.favoriteMovies = favoriteMovies;
}

public Date getBirthday() {
return birthday;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}


[html]
view plaincopyprint?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jiepu</groupId> <artifactId>mongodb</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mongodb</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>bson</artifactId> <version>3.0.2</version> </dependency> </dependencies> </project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>

<groupId>com.jiepu</groupId>
<artifactId>mongodb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>mongodb</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
</project>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: