开发环境:
System:Win7
IDE:eclipse
Database:mongoDB
开发依赖库:
JavaEE5、mongo-2.5.3.jar、junit.jar、org.hamcrest.core_1.1.0.v20090501071000.jar
一、准备工作
1、下载Mongodb对java支持jar包
jar包下载地址:
mongoDB对Java的相关支持、技术:http://www.mongodb.org/display/DOCS/Java+Language+Center
驱动源码下载:https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip
在线查看源码:https://github.com/mongodb/mongo-java-driver
2、 下面建立一个JavaProject工程,导入下载下来的驱动包。即可在Java中使用mongoDB,目录如下:悄早仔
二、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,它相当于我们数据库的“表”。
查询所有数据:
DBCursor cur = users.find()
while (cur.hasNext()) {
System.out.println(cur.next())
}
完整源码:
package com.mongodb
import java.net.UnknownHostException
import com.mongodb.util.JSON
public class simpleTest {
public static void main(String[] args) throws UnknownHostException, MongoException {
Mongo mg = new Mongo()
//查询所有的Database
for (String name : mg.getDatabaseNames()) {
System.out.println("dbName: " + name)
}
DB db = mg.getDB("test")
//查询所有的聚集集合
for (String name : db.getCollectionNames()) {
System.out.println("collectionName: " + name)
}
DBCollection users = db.getCollection("users")
//查询所有的数据
DBCursor cur = users.find()
while (cur.hasNext()) {
System.out.println("while="+cur.next())
}
System.out.println("count="+cur.count())
System.out.println("CursorId="+cur.getCursorId())
System.out.println("cur="+JSON.serialize(cur))
}
}
2、 完成CRUD *** 作,首先建立一个curdTset.java,基本测试代码如下:
package com.mongodb
import java.net.UnknownHostException
import java.util.ArrayList
import java.util.List
import org.bson.types.ObjectId
import org.junit.After
import org.junit.Before
import org.junit.Test
import com.mongodb.util.JSON
public class curdTset {
private Mongo mg = null
private DB db
private DBCollection users // 连接的mongodb数据库
@Before
public void init() {
System.out.println("Test Before...")
try {
mg = new Mongo()
// mg = new Mongo("localhost", 27017)
} catch (UnknownHostException e) {
e.printStackTrace()
} catch (MongoException e) {
e.printStackTrace()
} catch (Exception e) {
e.printStackTrace()
}
// 获取test DB;如果默认没有创建,mongodb会自动创建
db = mg.getDB("test")
// 获取users DBCollection;如果默认没有创建,mongodb会自动创建
users = db.getCollection("users")
}
@After
public void destory() {
System.out.println("Test After...")
if (mg != null) {
mg.close()
}
mg = null
db = null
users = null
System.gc()
}
public void print(Object o) {
System.out.println(o)
}
private void queryAll() {
print("查询users的所有数据:")
// db游标
DBCursor cur = users.find()
int i = 1
while (cur.hasNext()) {
print(" 记录"+i+": "+cur.next())
i++
}
}
@Test
public void add() {
//先查询所有数据
queryAll()
System.out.println("=============================== ADD start =======================================")
print("ADD count: " + users.count())
DBObject user = new BasicDBObject()
user.put("name", "hoojo")
user.put("age", 24)
user.put("sex", "男")
print(users.save(user).getN())
//添加多条数据,传递Array对象
print(users.insert(user, new BasicDBObject("name", "tom")).getN())
//添加List集合
List list = new ArrayList()
list.add(user)
DBObject user2 = new BasicDBObject("name", "lucy")
user.put("age", 22)
list.add(user2)
//添加List集合
print(users.insert(list).getN())
//查询下数据,看看是否添加成功
print("count=" + users.count())
System.out.println("=============================== ADD end =======================================")
//查询所有数据
queryAll()
}
@Test
public void remove() {
queryAll()
print("删除id = 4dde2b06feb038463ff09042:" + users.remove(new BasicDBObject("_id", new ObjectId("4dde2b06feb038463ff09042"))).getN())
print("remove age >= 24: " + users.remove(new BasicDBObject("age", new BasicDBObject("$gte", 24))).getN())
System.out.println("=============================== REMOVE end =======================================")
//查询所有数据
queryAll()
}
@Test
public void modify() {
print("修改:" + users.update(new BasicDBObject("_id", new ObjectId("4dde25d06be7c53ffbd70906")), new BasicDBObject("age", 99)).getN())
print("修改:" + users.update(
new BasicDBObject("_id", new ObjectId("4dde2b06feb038463ff09042")),
new BasicDBObject("age", 121),
true, // 如果数据库不存在,是否添加
false // 多条修改
).getN())
print("修改:" + users.update(
new BasicDBObject("name", "haha"),
new BasicDBObject("name", "dingding"),
true, // 如果数据库不存在,是否添加
false // false只修改第一条,true如果有多条就不修改
).getN())
//当数据库不存在就不修改、不添加数据,当多条数据就不修改
//print("修改多条:" + coll.updateMulti(new BasicDBObject("_id", new ObjectId("4dde23616be7c19df07db42c")), new BasicDBObject("name", "199")))
System.out.println("=============================== EDIT end =======================================")
//查询所有数据
queryAll()
}
@Test
public void testOthers() {
//查询所有数据
queryAll()
DBObject user = new BasicDBObject()
user.put("name", "hoojo")
user.put("age", 24)
//JSON 对象转换
print("serialize: " + JSON.serialize(user))
//反序列化
print("parse: " + JSON.parse("{ "name" : "hoojo" , "age" : 24}"))
print("判断temp Collection是否存在: " + db.collectionExists("users"))
//如果不存在就创建
if (!db.collectionExists("users")) {
DBObject options = new BasicDBObject()
options.put("size", 20)
options.put("capped", 20)
options.put("max", 20)
print(db.createCollection("account", options))
}
//设置db为只读
db.setReadOnly(true)
//只读不能写入数据
db.getCollection("test").save(user)
}
}
xampp的mysql也是一种数据库数据,在开发过程连接本地的mysql是没有问题的,只需要在微信小程序的开发工具中把项目设置的不校验合法域名等内容的选项打上勾即可, *** 作方法,菜单:设置-->项目设置-->不校验合法域名... 选项闭亏打上勾,但在正式发布后,小程序放置在腾讯的服务器上,存放轿逗神的文件基本是一些页面、样式、js、图片指袜等文件,mysql的数据必须要能通过互联网合法的域名访问到才行问题:
1. 在开发工具总配置文件中配置URI后,启动程序无法连接mongodb,uri如下:
spring.data.mongodb.uri : mongodb://name:password@ip:27017/dbname ,
但是如下配置(无用户名和密码)可以正常连接,uri如下:
spring.data.mongodb.uri : mongodb://渗稿颂ip:27017/dbname
2. MongoVUE客户端输入用户名和密码连接mongodb失败,不输入用户名和密码时连接成功。
解决:
修改配置文件:
vi /etc/mongod.conf ,找到#security: 取消注释,修改为:
security:
authorization: enabled #注意缩进,缩进参照配置文件其他配置,要不有可能会启动不成 功。
重启mongodb:
docker stop container_id
docker start container_id #container_id : mongodb对应的id
结果:
1. 启动项目时可以正常连接mongodb成功
2. 如果mongovue客户端连接还是不成丛郑功,可能是客户端和服务端版本问题,请自行百度解 决。
说明:
此类的问题没有标准解决敬蚂方案,因为个人的 *** 作执行命令的过程都不一样,如果未能解决你的问题,请再深入研究,此方案针对本人的问题已解决。以上过程省略了创建用户的过程,此过程自行 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)