mongodb安装及java操作demo
MongoDB的基本使用方法

MongoDB的基本使用方法MongoDB是一种NoSQL数据库,它非常适合处理大量结构松散的数据。
相较于传统的关系型数据库,它更加灵活,易于扩展。
本文将分为以下几个章节,介绍MongoDB的基本使用方法。
一、安装MongoDBMongoDB的官方网站提供了多种操作系统的安装包,用户可以选择适合自己的版本进行下载。
安装完成之后,需要配置MongoDB的环境变量,方便在终端中直接使用MongoDB命令。
二、启动MongoDB在终端输入"mongod"命令来启动MongoDB,并且默认会使用"/data/db"作为默认数据存储路径。
如果需要修改默认的数据存储路径,可以在启动时添加"--dbpath"参数,例如"mongod --dbpath/user/local/mongodb_data"。
三、连接MongoDB在终端中输入"mongo"命令可以进行与MongoDB的连接,并且默认连接到本地的MongoDB。
如果需要连接到远程的MongoDB,需要通过"mongo host:port"命令进行连接,其中host为MongoDB的IP地址,port为其端口号。
四、数据的增删改查MongoDB是一种文档型数据库,其数据以文档形式进行存储。
一条文档就是一个键值对集合,文档可以包含嵌套的文档,以及数组类型的值。
MongoDB提供了丰富的CRUD操作来实现数据的增删改查。
1.插入数据MongoDB中,可以通过insert()或者save()方法来插入一条数据。
例如:ers.insert({name:"Tom",age:18});或者:ers.save({_id:1,name:"Tom",age:18});其中,insert()和save()操作的区别在于,当插入数据的唯一标识已经存在时,insert()方法会直接报错,而save()方法则会将数据替换。
java中mongodb用法

java中mongodb用法Java中MongoDB是一种非关系型数据库,也被广泛应用于各种项目之中。
本文将详细介绍Java中MongoDB的用法,主要包括MongoDB的安装、配置、连接、查询、更新等操作。
1. 安装MongoDB首先,我们需要在本地环境中安装MongoDB。
具体安装过程可以参考MongoDB官方文档,包括解压下载的MongoDB安装包、配置环境变量等步骤。
安装完成后,我们可以通过命令行输入`mongo`命令,进入MongoDB的shell环境。
2. 配置MongoDB在Java中使用MongoDB之前,我们需要配置MongoDB的连接信息。
在Java中,我们可以使用Java驱动程序提供的`MongoClient`类来与MongoDB建立连接。
以下是一个示例的连接配置:import com.mongodb.MongoClient;import com.mongodb.MongoClientURI;public class MongoDBJavaExample {public static void main(String[] args) {MongoClientURI uri = newMongoClientURI("mongodb:localhost:27017");MongoClient mongoClient = new MongoClient(uri);连接到指定的数据库MongoDatabase database =mongoClient.getDatabase("mydb");连接到指定的集合MongoCollection<Document> collection = database.getCollection("mycollection");其他操作...}}在上面的示例中,我们通过`MongoClientURI`类来指定MongoDB的连接URI字符串,在本例中我们连接到本地的MongoDB实例,端口号为默认的27017。
Windows下MongoDB的下载安装、环境配置教程图解

Windows下MongoDB的下载安装、环境配置教程图解下载MongoDB1、进⼊MongoDB官⽹,Products -> 选择SOFTWARE下的MongoDB Server2、选择下载最新版3、选择对应的版本下载msi安装包形式安装MongoDB1、选择complete,完整安装(安装全部组件)。
complete,完整的、完全的。
当然也可以选⾃定义安装,影响不⼤。
2、data⽬录是数据存储⽬录,数据库中的数据就存储在这个⽬录中。
log是⽇志⽂件的输出⽬录。
需要在该盘的根⽬录下新建⼀个data⽂件夹(必须要是MongoDB安装盘符的根⽬录下),在data⽂件夹下创建db⼦⽂件夹(存放数据库⽂件)、log⼦⽂件夹(存放⽇志⽂件)。
然后再把上⾯的data⽬录修改为我们刚才创建的db⽂件夹的路径。
如果不修改data路径,会出现⼀些问题;log路径改不改都⾏,影响不⼤。
启动MongoDB服务服务时,会先检查db⽬录下是否有所需的⽂件、⽂件夹,没有就⾃动创建,有就从中读取数据,初始化服务器。
说明:4.0及以后的版本,使⽤msi⽅式安装,不必创建data、db⽂件夹,不必修改data路径,使⽤默认的就⾏。
当然,修改了也⾏。
3、ok,安装完成。
我们打开服务,MongoDB已安装为WIndwos服务,并⾃动开启:说明:MongoDB 4.0的安装和以前版本⼤不相同,4.0之后的版本简化了安装,在安装时就可以进⾏配置,不必再使⽤命令⾏进⾏参数配置。
zip压缩包形式安装MongoDB1、解压,重命名解压后得到的⽂件夹为mongdb(⽅便输路径),将mongodb⽂件夹放在某个位置,⽐如我放在D:\2、在mongodb⽂件夹所在盘符的根⽬录下,创建data⽂件夹,在data⽂件下创建db⼦⽂件夹、log⼦⽂件。
可以⿏标右键新建,也可以命令⾏下:mkdir 盘符:\data\dbmkdir 盘符:\data\log3、将MongoDB安装为Windows服务(1)在mongodb⽂件夹下新建⽂本⽂件 mongod.cfg,mongod指的是MongoDB的服务器端程序mongod.exe,后缀cfg即config,表⽰这是⼀个配置⽂件。
mongodb实验数据库基本操作

mongodb实验数据库基本操作MongoDB是一种非关系型数据库,它以文档的形式存储数据。
在本文中,我们将介绍MongoDB实验数据库的基本操作。
首先,我们需要安装MongoDB并启动它。
安装过程可以参考MongoDB官方网站提供的文档。
安装完成后,我们可以通过命令行或者MongoDB的图形界面工具来操作数据库。
接下来,我们需要创建一个数据库。
在MongoDB中,可以使用`use`命令来创建数据库。
例如,我们可以使用以下命令创建一个名为`experiment`的数据库:```use experiment```创建数据库后,我们可以使用`db`命令来查看当前正在使用的数据库。
例如,我们可以使用以下命令查看当前正在使用的数据库:```db```接下来,我们可以创建一个集合(类似于关系型数据库中的表)。
在MongoDB中,可以使用`db.createCollection()`命令来创建集合。
例如,我们可以使用以下命令创建一个名为`students`的集合:```db.createCollection("students")```创建集合后,我们可以使用`db.getCollectionNames()`命令来查看当前数据库中的所有集合。
例如,我们可以使用以下命令查看当前数据库中的所有集合:```db.getCollectionNames()```接下来,我们可以向集合中插入文档(类似于关系型数据库中的行)。
在MongoDB中,可以使用`db.collection.insert()`命令来插入文档。
例如,我们可以使用以下命令向`students`集合中插入一个名为`Alice`的文档:```db.students.insert({name: "Alice", age: 20, major: "Computer Science"}) ```插入文档后,我们可以使用`db.collection.find()`命令来查询集合中的文档。
MongoDB的安装及配置文件选项全解

MongoDB的安装及配置⽂件选项全解安装部分1. 安装包1.1 mongodb-org可以⾃动安装以下的四个包1.2 mongodb-org-servermongod进程和配置⽂件,启动脚本1.3 mongodb-org-mongosmongos进程1.4 mongodb-org-shellmongo shell1.5 mongodb-org-tools其他mongodb⼯具,mongoimport,mongoexport,mongodump,mongrestore,mongofiles,bsondump,mongooplog,mongoperf,mongostat,mongotop, (mongosniff)2. 脚本⽂件2.1 /etc/rc.d/init.d/mongod启动脚本2.2 /etc/mongod.conf配置⽂件3. 安装mongodb3.1 配置yum源/etc/yum.repos.d/mongodb.repo ->[mongodb]name=MongoDB Repositorybaseurl=/repo/redhat/os/x86_64/gpgcheck=0enabled=1如果是32bit系统[mongodb]name=MongoDB Repositorybaseurl=/repo/redhat/os/i686/gpgcheck=0enabled=13.2 安装mongodb版本sudo yum install mongodb-org安装指定版本mongodbyum install mongodb-org-2.6.1 mongodb-org-server-2.6.1 mongodb-org-shell-2.6.1 mongodb-org-mongos-2.6.1 mongodb-org-tools-2.6.13.3 为了避免⽆意识的升级/etc/yum.conf ->exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools4. 运⾏mongodb注意mongodb的默认端⼝和SELinux服务的状态。
MongoDB_使用手册-中文版

MongoDB_使用手册-中文版MongoDB 使用手册-中文版1:简介1.1 MongoDB 简介1.2 MongoDB 的优势1.3 安装 MongoDB1.4 启动和关闭 MongoDB2:数据库操作2.1 创建数据库2.2 切换数据库2.3 删除数据库2.4 数据库的备份和还原2.5 数据库的访问控制3:集合操作3.1 创建集合3.2 删除集合3.3 查找集合3.4 更新集合3.5 排序和限制集合结果4:文档操作4.1 插入文档4.2 查询文档4.3 更新文档4.4 删除文档4.5 索引和性能优化5:聚合操作5.1 聚合管道5.2 查询优化技巧5.3 数据分析和处理6:数据备份和恢复6.1 数据备份策略6.2 数据恢复方法7:复制和分片7.1 复制集7.2 分片集群8:安全性和权限控制8.1 认证和授权8.2 数据加密8.3 安全配置建议9: MongoDB 驱动程序9.1 Python 驱动程序 9.2 Java 驱动程序9.3 Node:js 驱动程序 9.4 :NET 驱动程序10:性能调优10:1 集合级别的优化 10:2 查询优化10:3 索引优化10:4 内存和磁盘配置11:故障排除11.1 常见问题11.2 日志分析11.3 性能监控12: MongoDB 与关系型数据库的比较12.1 数据模型比较12.2 查询语言比较12.3 事务和一致性比较本文档涉及附件:1:示例代码文件:[附件1](附件1:zip)2:配置文件示例:[附件2](附件2:txt)本文所涉及的法律名词及注释:1:认证和授权:指通过身份验证和权限控制来确保只有经过授权的用户才能访问和操作数据库的过程。
2:数据加密:指使用加密算法对数据库中的敏感数据进行加密保护的过程。
3:复制集:指一组 MongoDB 服务器的集合,其中包含主服务器(primary)和多个副本服务器(secondary),用于提供数据冗余和高可用性支持。
java常用的连接mongodb的方法
java常用的连接mongodb的方法在Java中连接MongoDB有很多方法,下面将介绍一些常用的方法。
1. 使用MongoClient连接MongoDB:MongoClient是MongoDB官方提供的Java连接驱动程序,可以用来连接MongoDB服务器。
以下是连接MongoDB的代码示例:```javapublic class MongoDBConnectionpublic static void main(String[] args)MongoClient mongoClient = new MongoClient(connectionString);MongoDatabase database = mongoClient.getDatabase("mydb");System.out.println("Connected to the database successfully");mongoClient.close(;}```2. 使用MongoClientOptions配置连接MongoDB:MongoClientOptions用于配置MongoClient的一些选项,例如连接池的最大连接数、连接超时时间等。
以下是连接MongoDB的代码示例:```javapublic class MongoDBConnectionpublic static void main(String[] args)MongoClientOptions options = MongoClientOptions.builder.connectionsPerHost(10).connectTimeout(5000).build(;MongoDatabase database = mongoClient.getDatabase("mydb");System.out.println("Connected to the database successfully");mongoClient.close(;}```3. 使用MongoClient连接MongoDB副本集:如果要连接MongoDB的副本集,需要使用MongoClient的另一个构造函数,并传入一个MongoClientURI。
Mongodb系列-java客户端简单使用(CRUD)
Mongodb系列-java客户端简单使⽤(CRUD)Mongodb提供了很多的客户端: shell,python, java, node.js...等等.以 java 为例实现简单的增删改查pom⽂件:<dependencies><dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver</artifactId><version>3.4.3</version></dependency><dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-async</artifactId><version>3.4.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency></dependencies>在这⾥我们先封装⼀个mongodb管理类:import java.util.ArrayList;import java.util.List;import java.util.Map;import org.bson.Document;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.mongodb.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.model.CreateCollectionOptions;import com.mongodb.client.result.DeleteResult;/*** MongoDB管理类* @author jiangyuechao**/public class MongoDBHelper {static Logger logger = LoggerFactory.getLogger(MongoDBHelper.class);static String ip = "10.80.18.1";//10.80.21.41 10.80.18.1static MongoClient mongoClient = new MongoClient(ip, 27017);//MongoDatabase实例是不可变的static MongoDatabase database;//firstDBpublic static void connect(String databaseName){database = mongoClient.getDatabase(databaseName);}public static MongoCollection<Document> getCollection(String collectionName){//MongoCollection实例是不可变的if(!collectionExists(collectionName)){return null;}MongoCollection<Document> collection = database.getCollection(collectionName);return collection;}public static boolean collectionExists(final String collectionName) {boolean collectionExists = database.listCollectionNames().into(new ArrayList<String>()).contains(collectionName);return collectionExists;/*MongoIterable<String> mongoIterable = database.listCollectionNames();for (Iterator<String> iterator = mongoIterable.iterator(); iterator.hasNext();) {String name = iterator.next();("name:{}", name);if(name.equals(collectionName)){return true;}}return false;*/}public static void getAllDocuments(MongoCollection<Document> collection){MongoCursor<Document> cursor = collection.find().iterator();try {while (cursor.hasNext()) {System.out.println(cursor.next().toJson());}} finally {cursor.close();}}public static String getDocumentFirst(MongoCollection<Document> collection){Document myDoc = collection.find().first();return myDoc.toJson();}public static void createDocument(MongoCollection<Document> collection,Map<String,Object> map){System.out.println("--------------------");map.forEach((k,v)->{ System.out.println("Key : " + k + " Value : " + v);});}/*** 插⼊⼀个Document* @param collection* @param doc*/public static void insertDocument(MongoCollection<Document> collection,Document doc){collection.insertOne(doc);}/*** 插⼊多个Document* @param collection* @param documents*/public static void insertManyDocument(MongoCollection<Document> collection,List<Document> documents){ collection.insertMany(documents);}/*** 显⽰创建集合*/public static void explicitlyCreateCollection(String collectionName){database.createCollection(collectionName,new CreateCollectionOptions().capped(false));}// 删除集合的所有⽂档public static long deleteAllDocument(MongoCollection<Document> collection) {DeleteResult deleteResult = collection.deleteMany(new Document());long count = deleteResult.getDeletedCount();return count;}// 删除集合public static void deleteCollection(MongoCollection<Document> collection) {collection.drop();}/*** <p>* 关闭客户端* </p>** @author jiangyuechao 2018年4⽉9⽇上午11:23:36*/public static void closeDb() {mongoClient.close();}}简单分析:1. 使⽤ ip, port 连接mongodb数据库: static MongoClient mongoClient = new MongoClient(ip, 27017);2. 连接数据库: database = mongoClient.getDatabase(databaseName);3. 连接集合: MongoCollection<Document> collection = database.getCollection(collectionName);4. 封装了基本的创建集合, insert ,delete操作.使⽤实例QuickTour例⼦:package com.chaochao.mongodb;import static com.mongodb.client.model.Filters.eq;import static com.mongodb.client.model.Filters.gte;import static com.mongodb.client.model.Filters.lt;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.bson.Document;import com.mongodb.client.MongoCollection;import com.mongodb.client.model.Filters;import com.mongodb.client.result.DeleteResult;import com.mongodb.client.result.UpdateResult;public class QuickTour {static String databaseName = "firstDB";static String collectionName = "firstCollection1";static MongoCollection<Document> firstCollection;public static void main(String[] args) {QuickTour quickTour = new QuickTour();quickTour.setUp();// quickTour.updateMultipleDoc();// quickTour.deleteMultiple();quickTour.getAllDocuments();}/*** 连接数据库*/public void setUp(){MongoDBHelper.connect(databaseName);firstCollection = MongoDBHelper.getCollection(collectionName);}public void getAllDocuments(){MongoDBHelper.getAllDocuments(firstCollection);}public void getDocumentFirst(){MongoDBHelper.connect(databaseName);MongoCollection<Document> collection = MongoDBHelper.getCollection(collectionName);String json = MongoDBHelper.getDocumentFirst(collection);System.out.println(json);}/*** 返回符合匹配条件的第⼀个doc* @param collection*/public void getDocMatcheFilter(){Document myDoc = firstCollection.find(eq("y", 2)).first();System.out.println(myDoc.toJson());}public void getAllDocMatcheFilter(){firstCollection.find(Filters.gt("i", 10)).forEach((Document document)->{System.out.println(document.toJson());});}public void updateOneDoc(){UpdateResult updateResult = firstCollection.updateOne(Filters.eq("i", 12), new Document("$set", new Document("i", 21))); System.out.println(updateResult.getModifiedCount());}public void updateMultipleDoc(){UpdateResult updateResult = firstCollection.updateMany(lt("i", 100), new Document("$inc", new Document("i", 100)));System.out.printf("count:%s,insertedId:%s",updateResult.getModifiedCount(),updateResult.getUpsertedId());System.out.println();}public void deleteOne(){DeleteResult deleteResult = firstCollection.deleteOne(eq("i", 121));System.out.println(deleteResult.getDeletedCount());}public void deleteMultiple(){DeleteResult deleteResult = firstCollection.deleteMany(gte("i", 100));System.out.println(deleteResult.getDeletedCount());}/*** 插⼊⼀个doc* @param collection*/public void insertDocument(){Document doc = new Document("name", "MongoDB").append("type", "database").append("count", 1).append("versions", Arrays.asList("v3.2", "v3.0", "v2.6")).append("info", new Document("x", 203).append("y", 102));MongoDBHelper.insertDocument(firstCollection, doc);}/*** 插⼊多个doc* @param collection*/public void insertMultipleDoc(){List<Document> documents = new ArrayList<Document>();for (int i = 0; i < 100; i++) {documents.add(new Document("i", i));}MongoDBHelper.insertManyDocument(firstCollection, documents);}public void countDocs(){System.out.println(firstCollection.getNamespace().getCollectionName()+"-count:"+firstCollection.count());}}这个例⼦展⽰了基本的增删改查操作,直接可以运⾏..安装mongodb参照官⽹,挺简单的,java 连接mongodb参照我前边的博客:⽐如我的获取firstCollection1 集合的所有⽂档 :{ "_id" : { "$oid" : "5a631d80070db90c43a3477d" }, "x" : 1.0 }{ "_id" : { "$oid" : "5a631db0070db90c43a3477e" }, "y" : 2.0 }{ "_id" : 10.0, "calc" : 2.555555000005E12 }{ "_id" : { "$oid" : "5a66d717ba3c702c14df31b3" }, "name" : "MongoDB", "type" : "database", "count" : 1, "versions" : ["v3.2", "v3.0", "v2.6"], "info" : { "x" : 203, "y" : 102 } }{ "_id" : { "$oid" : "5a9220cafffeed155066c035" }, "domainID" : { "$numberLong" : "2001" }, "type" : "chao" }mongodb简单的CRUD还是很好理解的,这⾥只是⼀个⼊门,让你快速熟悉它的操作,跟传统的数据库逻辑还是⼀致的:1. 连接数据库2. 执⾏操作3. 关闭连接那些复杂的查询和更新操作,我们放在后边介绍,⽐如: 如何匹配数组中的元素? 如何匹配嵌⼊⽂档,查询值为 null 的字段等等..转载注明出处:。
Linux安装MongoDB启动及常见问题解决
Linux安装MongoDB启动及常见问题解决MongoDB安装过程以及问题记录⼀、MongoDB安装下载MongoDB可能需要注册⼀下我这⾥是Centos7系统所以选择的是RHEL7.0的TGZ,其他系统⾃⾏选择下载步骤:[root@localhost ~]# curl -O https:///linux/mongodb-linux-x86_64-rhel70-4.2.6.tgz # 下载[root@localhost ~]# tar -zxvf mongodb-linux-x86_64-rhel70-4.2.6.tgz # 解压[root@localhost ~]# mv mongodb-linux-x86_64-rhel70-4.2.6/ /usr/local/mongodb # 移动到/usr/local/mongodb[root@localhost ~]# export PATH=/usr/local/mongodb/bin:$PATH # 加⼊PATH环境,⾃定义路径记得更换[root@localhost ~]# cd /usr/local/mongodb # 进⼊⽬录[root@localhost mongodb]# sudo mkdir -p /data/mongodb # /data下创建mongodb ⽤于存放MongoDB数据[root@localhost mongodb]# sudo chmod -r 777 /data/mongodb # 给予777权限[root@localhost data]# cd /data/mongodb/ # 进⼊⽬录[root@localhost mongodb]# sudo mkdir logs # 创建⽇志⽬录[root@localhost mongodb]# cd logs # 进⼊⽬录[root@localhost logs]# touch mongodb.log # 创建MongoDBlog⽂件[root@localhost logs]# cd /usr/local/mongodb/bin # 进⼊安装⽬录bin⽬录[root@localhost bin]# sudo vim mongodb.conf # 编辑配置⽂件dbpath = /data/mongodb # 数据存放位置logpath = /data/mongodb/logs/mongodb.log # ⽇志⽂件存放位置port = 27017 # MongoDB端⼝fork = true # 以守护程序的⽅式启⽤,即在后台运⾏# nohttpinterface = true # 这个配置需要去掉,不然会出现如下错误# Error parsing INI config file: unrecognised option 'nohttpinterface'auth=true # 权限⽅式启动bind_ip=0.0.0.0[root@localhost bin]# ./mongod -f ./mongodb.conf # 启动MongoDB[root@localhost bin]# ps -ef|grep mongodb # 查看运⾏状态root 34125 1 0 09:43 ? 00:00:08 ./mongod -f ./mongodb.confroot 53204 33869 0 10:23 pts/0 00:00:00 grep --color=auto mongodb运⾏状态如图:访问⼀下:⼆、MongoDB后台启动我们这⾥⽤到的是⽤后台systemctl启动MongoDB⾸先把MongoDB加⼊service服务vim /lib/systemd/system/mongodb.service写⼊[Unit]Description=redisAfter=network.target[Service]Type=forkingExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.targetwq保存退出即可接着运⾏以下,记得终⽌之前打开的MongoDB的进程[root@localhost redis-6.0.1]# systemctl enable mongodb.service # 加⼊开机启动[root@localhost redis-6.0.1]# systemctl is-enabled mongodb.service # 查看开机是否启动成功enabled[root@localhost redis-6.0.1]# systemctl start mongodb # 开启mongoDB服务[root@localhost redis-6.0.1]# systemctl status mongodb # 查看mongoDB运⾏状态如果启动出现问题,可以通过systemctl status mongodb来查看⽇志修复如图已经启动成功最后做⼀个软连接⽅便运⾏[root@localhost bin]# ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo[root@localhost bin]# mongoMongoDB shell version v4.2.6connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("6924698e-44ae-4d01-a0ab-013210c61330") }MongoDB server version: 4.2.6> ^Cbye以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
Java操作mongoDB使用文档
Java Driver for MongoDB开发前准备:1.MongoDB连接url(e.g. localhost:27017)2.mongo-java-driver-2.9.3.jar(目前最新版)(用来查看api和帮助文档)一、连接MongoDB// MongoDB连接对象private Mongo mongoDBServer;// 根据host:port获取MongoDB连接对象mongoDBServer = new Mongo( host, port );// 数据库名private String database;// 从连接对象中获得相应数据库对象DB db = mongoDBServer.getDB( database );至此,我们已经打开了一个mongodb的连接,并且已经获得一个名为database的数据库(mongodb中成为collection集合)。
下面对这个集合进行增删改查操作。
进行操作前。
我们需要先使用数据库对象获取表(mongodb中的集合对象)。
// 获得名为person的表(又称集合)DBCollection dbcol = db.getCollection( "person" );二、新增操作(Add)// 新建一个map对象,将需要保存的数据放入map中map.put("key","value");…….// 用map对象创建一个MongoDB自带的DBObject对象用作插入操作参数DBObject param = new BasicDBObject( map );// 调用数据库集合对象的insert方法,传入DBObject对象执行插入操作WriteResult result = dbcol.insert( param );WriteResult对象是操作返回结果,我们可以用如下方法判断操作是否出错if ( result.getError() != null ){System.out.println( result.getError() );}至此新增操作完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Mongodb安装配置官网下载或百度下载一个mongodb的安装文件官网地址:https:///downloads本人下载的版本是2.0.6版,zip文件直接解压放到d盘1.打开cmd输入如下图2.新建相应的目录或文件新建~数据库目录 d:\mongodb\data新建~日志目录 d:\mongodb\log新建~配置文件 d:\mongodb\mongodb.cfg(或是config文件) mongodb.cfg:内容如下##数据文件dbpath=d:\mongodb\data##日志文件logpath=d:\mongodb\log\mongo.log3.打开命令行,运行上面配置文件然后打开浏览器:http://127.0.0.1:27017/如下图(该图只是借鉴)Cmd输入mongod --config D:\mongodb\mongo.cfg运行的界面如下说明连接成功了。
4. cmd可以测试查看mongodb版本至此就表示成功运行mongodb 了,可是每次都这样常规启动很麻烦。
为了以后启动方便,下面就介绍将 mongodb 作为windows 服务启动。
5. windows 服务启动常规方式:命令如下:mongod --config D:\mongodb\mongo.cfg --install常规的启动后会在进出里面看到,但是每次常规的启动要把原来(自己安装的mongodb的路径下面的)mongodb/data/db下面的.lock文件删除,因为日志文件会出现连接后马上exit问题。
sc 方式:命令如下:sc create mongodb binPath= "d:\mongodb\bin\mongod.exe --service --config=d:\mongodb\mongo.config"binPath后的“=”和值之间需要“”注:可能在win7、win8 无法用常规方式安装请采用sc方式图片采用sc 方式注意查看在 C:\Windows\System32\cmd.exe 下已管理员身份运行。
然后再cmd输入services.msc可以在本地服务查看到如下图的mongodb的服务,可以进行手动启动或其他。
Mongodb与java1.下载mongodb的驱动包,下面是本人的demo版,如图这是我找到的一个网上提供的地址,有很多版本的驱动包/maven2/org/mongodb/mongo-java-driver根据你自己安装的版本下,可以。
我用的是2.5版本的驱动包,但是安装的是2.0.6版本的,不影响java的操作。
简单的测试连接指定ip地址,端口号来连接db.getCollection(“c2”)如果c2集合不存在,数据库会自动创建一个c2的集合(相当于表) Java操作mongodb的例子网上的一个例子/lib/view/open1435117528497.html本人的例子类似。
package goyor;import .UnknownHostException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.bson.types.ObjectId;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.MongoException;import com.mongodb.util.JSON;/*** mongodb进行数据库操作* @author Administrator**/public class MongodbO {private Mongo mg=null;//创建一个mongo对象private DB db;//设置数据库private DBCollection collection;//获取连接/*** 初始化*/public void init(){try {//1.实例化mongo对象连接数据库的地址mg=new Mongo("192.168.2.51",27017);//2.连接名为test的数据库,假如数据库不存在的话,mongodb会自动建立db = mg.getDB("test");boolean auth = db.authenticate("test","123".toCharArray());//用户密码验证默认的test是可以不用验证用户密码的i f(auth)//3.从Mongodb中获得名为c1的数据集合,如果该数据集合不存在,Mongodb 会为其新建立collection = db.getCollection("c1");elseSystem.out.println("用户名或密码错误");}catch (UnknownHostException e) {System.out.println("网络地址有问题");e.printStackTrace();} catch (MongoException e) {// TODO: handle exceptionSystem.out.println("mongo服务连接失败");}}public void print(Object o) {System.out.println(o);}//查询数据public void queryAll() {print("查询c1的所有数据:");//db游标DBCursor cur = collection.find();while (cur.hasNext()) {print(cur.next());}}//添加数据public void insert() {//先查询所有数据queryAll();print("count------------------------: " + collection.count());// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
DBObject document = new BasicDBObject();document.put("name", "user12");document.put("age", 11);//document.save(user)保存,getN()获取影响行数//print(collection.save(document).getN());//扩展字段,随意添加字段,不影响现有数据document.put("sex", "boy");print("getN()获取影响行数:"+collection.save(document).getN());queryAll();}//添加多条数据2public void insert2() {//先查询所有数据queryAll();print("count------------------------: " + collection.count());// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
DBObject document = new BasicDBObject();//添加多条数据,传递Array对象print(collection.insert(document, new BasicDBObject("name", "user13"),new BasicDBObject("name", "user14")).getN());queryAll();}//添加list数据public void insert3() {//先查询所有数据queryAll();print("count------------------------: " + collection.count());DBObject document = new BasicDBObject();document.put("name", "user15");document.put("age", 15);document.put("sex", "girl");//添加List集合List<DBObject> list = new ArrayList<DBObject>();list.add(document);DBObject document2 = new BasicDBObject("name", "lucy");document2.put("age", 22);list.add(document2);//添加List集合print(collection.insert(list).getN());//查询下数据,看看是否添加成功print("count: " + collection.count());queryAll();}/*** 第二种方法是使用BasicDBObjectBuilder对象*///@Testpublic void insert4() {queryAll();BasicDBObjectBuilder documentBuilder =BasicDBObjectBuilder.start().add("database", "mkyongDB").add("table", "hosting");BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start().add("records", "99").add("index", "vps_index1").add("active", "true");documentBuilder.add("detail", documentBuilderDetail.get());collection.insert(documentBuilder.get());queryAll();}/*** 第三种方法是使用Map对象*///@Testpublic void insert5() {queryAll();Map documentMap =new HashMap();documentMap.put("name", "Victor");documentMap.put("age", "23");Map documentMapDetail =new HashMap();documentMapDetail.put("records", "99");documentMapDetail.put("index", "vps_index1");documentMapDetail.put("active", "true");documentMap.put("detail", documentMapDetail);collection.insert(new BasicDBObject(documentMap));queryAll();}/*** 第四种方法,也就是最简单的,即直接插入JSON格式数据*///@Testpublic void insert6() {queryAll();String json ="{'name' : 'Victor','age' : 35,"+"'detail' :{'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}";//这里使用了JSON的parse方法,将解析后的JSON字符串转变为DBObject对象后再直接插入到collection中去DBObject dbObject =(DBObject)JSON.parse(json);collection.insert(dbObject);//插入数据queryAll();}//删除数据public void remove() {queryAll();/*print("删除id = 54ce0da47eb42dac72929bad:" +collection.remove(new BasicDBObject("_id",new ObjectId("54ce0da47eb42dac72929bad"))).getN());*/print("remove age > 20: " + collection.remove(newBasicDBObject("age",new BasicDBObject("$gt", 20))).getN());//age大于20的数据被删除了排除了age的值类型为字符串的queryAll();}//修改方法1public void update() {queryAll();//这种方式下,其他字段会全部消失只能保存_id与其后面修改的字段字段没有自动添加print("修改:" + collection.update(new BasicDBObject("_id", new ObjectId("568b5a43f57b08a413562315")),new BasicDBObject("name", "user11")).getN());//修改 id值为 568b5a43f57b08a413562315//第一个对象为修改的条件第二个后为要修改的字段queryAll();}//修改方法2public void update2() {queryAll();//这种方式下,其他字段不会消失BasicDBObject newDocument =new BasicDBObject();newDocument.put("name", "user11");newDocument.put("age", 1111);newDocument.put("sex", "boy");collection.update(new BasicDBObject().append("name", "user11"), newDocument);//修改user11对象queryAll();}//修改方法3public void update3() {queryAll();//$set修饰符的使用,这种方式下,其他字段不会消失且可以修改多条/*BasicDBObject newDocument =new BasicDBObject().append("$set", new BasicDBObject().append("sex", "boy"));collection.update(new BasicDBObject().append("name", "user15"), newDocument);*/BasicDBObject newDocument =new BasicDBObject().append("$set", new BasicDBObject().append("age", 11));print("修改:" +collection.update(newBasicDBObject().append("name", "user14"),newDocument,false,true).getN());queryAll();}//@Testpublic void update4() {queryAll();/* */ print("修改:" + collection.update(new BasicDBObject("_id", newObjectId("568b61504b3812aec38cab6e")),new BasicDBObject("name", "user14"),true,//如果数据库不存在,是否添加条件不符合 true时会自动添加一条数据false//多条修改此处为true 时根本没效果).getN());/* print("修改:" + collection.update( new BasicDBObject("age", 100),new BasicDBObject("sex", "old"),false,//如果数据库不存在,是否添加条件不符合 true时会自动添加一条数据false//多条修改).getN());*///条件符合其他字段会消失和update 结果类似最后一个为true 时不会修改//fields stored in the db can't start with '$' 修改的值不能有$符号queryAll();}//查询public void query() {//mongodb的query关系式需要参考/manual/reference/operator/query///queryAll();System.out.println("================================================" );//1) 获得数据库中的第一个documentDBObject doc = collection.findOne();System.out.println("获得数据库中的第一个document: "+doc);//2)这里,使用collection.find()方法,获得当前数据库中所有的documents 对象集合//然后通过对DBCursor对象集合的遍历,即可输出当前所有documentsDBCursor cursor = collection.find();System.out.println("游标遍历数据");while(cursor.hasNext()){System.out.println(cursor.next());}System.out.println("指定查询name为Victor的数据================================================");//3)获取指定的documentBasicDBObject query =new BasicDBObject();query.put("name", "Victor");DBCursor cursor2 = collection.find(query);while(cursor2.hasNext()){System.out.println(cursor2.next());}System.out.println("查询条件年级为in(11,15)岁的================================================");//4) 使用in操作符号//在mongodb中,也可以使用in操作符,比如要获得age=11和age=15的document对象BasicDBObject query2 =new BasicDBObject();List list =new ArrayList();list.add(11);list.add(15);query2.put("age", new BasicDBObject("$in", list));DBCursor cursor3 = collection.find(query2);while(cursor3.hasNext()){System.out.println(cursor3.next());}System.out.println("查询年级大于5岁的================================================");//5) 使用>,<等比较符号,比如要输出age>5的document集合,则使用“$gt”即可,同理,小于关系则使用$ltBasicDBObject query3 =new BasicDBObject();query3.put("age", new BasicDBObject("$gt", 5));DBCursor cursor4 = collection.find(query3);while(cursor4.hasNext()){System.out.println(cursor4.next());}}//销毁连接public void destroy() {if (mg != null)mg.close();mg = null;db = null;collection = null;System.gc();//垃圾回收}public static void main(String[] args) {MongodbO bo = new MongodbO();bo.init();bo.query();//bo.update3();//bo.remove();//删除//bo.queryAll();//bo.insert6();//bo.insert2();//bo.insert3();//bo.destroy();}}Mongodb的cmd常用命令Cmd进入mongodb进行操作查看所有的数据库查看help帮助网上百度到的/shirdrn/article/details/7105539,这里面写得很清楚可以去基本操作敲入help命令:show dbs show database names #显示当前总共有哪些数据库show collections show collections in current database #显示当前数据库的所有集合show users show users in current database #显示用户show profile show most recent system.profile entries with time >= 1ms show logs show the accessible logger names #现实所有的log文档show log [name] prints out the last segment of log in memory, 'global' is default#显示名字为name的log文档的信息use <db_name> set current database #使用db_name此数据库db.foo.find() list objects in collection foo #显示数据库.集合....下所有文档db.foo.find( { a : 1 } ) list objects in foo where a == 1 #显示数据库.集合....下所有符合条件的a=1的文档it result of the last line evaluated; use to further iterate DBQuery.shellBatchSize = x set default number of items to display on shellexit quit the mongo shell #退出遇到的问题:1.Sat Jul 27 10:43:29 SyntaxError: missing ; before statement (shell):1语法错误,有可能是忘记了函数的方法要加()也有可能是忘记了加“,”等等2.> foo.insert(test)Sat Jul 27 10:23:28 ReferenceError: foo is not defined (shell):1foo是我定义的数据库名字,所以不能直接使用数据库执行insert()方法,只有集合才执行更删改查文档的方法。