Java mongodb 基本操作入门

下载: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/

启动数据库:
./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"});

http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html

readme文档:

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,它相当于我们数据库的“表”。

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.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.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;
    }
}

<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>






  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值