TipsMake.com-在下面的文章中,我们将向您介绍MongoDV Java Driver的一些基本特性以及如何在实践中部署和应用.要了解有关 Java API 函数的更多信息,请访问此处。
其实使用Java驱动还是很简单的。首先,您需要确保 mongo.jar jar 驱动程序包含在主 classpath 中。以下代码取自驱动程序中的示例 /QuickTour.java 示例。
创建连接:
要创建到 MongoDB 的连接,要满足的最低条件是数据库的名称。从技术上讲,这个数据库不需要存在,如果不存在,MongoDB 将为用户创建一个副本。此外,用户可以在连接时明确指定服务器的地址和端口。以下示例显示了连接到本地计算机上名为 mydb 的数据库的三种基本方法:
导入 com.mongodb.Mongo;导入com.mongodb.DB;导入 com.mongodb.DBCollection;导入 com.mongodb.BasicDBObject;导入 com.mongodb.DBObject;导入 com.mongodb.DBCursor;
Mongo m=new Mongo ();
//或
Mongo m=new Mongo ("localhost");
//或
Mongo m=new Mongo ("localhost", 27017);
DB db=m.getDB("mydb");
此时,db对象成为固定数据库的MongoDB服务器的主要连接。有了这个组件,我们将能够执行更多任务。不过需要注意的是,Mongo 对象会成为数据库连接进程的一个池,我们只需要一个 Mongo 类的对象,有很多不同的线程(参考这里)。)。从本质上讲,Mongo 类被专门设计为一个安全线程,并且可以在许多不同的线程之间轻松共享。通常,您只需要为集群数据库创建一个示例并在整个应用程序中使用它。如果您遇到我们被迫创建许多变量的特殊情况,请注意:
- 资源使用限制(最大连接数。)应用于变量。
- 要关闭变量,请使用 mongo.close () 函数擦除有关所用资源的数据。
确认过程(可选):
MongoDB 可以在安全模式下运行,在这种模式下,对数据库的所有访问都受到控制,并通过名称和密码进行监控。这样做时,任何客户端应用程序都必须在执行后续步骤之前提供名称和密码。在Java Driver中,我们只需要在连接mongo对象时使用如下命令语法即可:
boolean auth=db.authenticate (myUserName, myPassword);
如果用户名和密码在数据库中的凭据是正确的,auth将变为true ,否则将变为 false(检查 MongoDB 日志文件)。事实上,大多数人使用 MongoDB 无需在安全可靠的环境中进行确认。
获取收藏列表:
本质上每个数据库都有0个或多个Collection,我们可以从db中获取这些组件的列表:
设置 colls=db.getCollectionNames();
for (String s: colls) {
System.out.println (s);
}
并假设数据库中有两个集合,名称和密码。系统返回的结果将包括:
名称地址
获取收藏:
如果您想检索任何一个要使用的集合,您只需要显式指定该集合的名称即可getCollection(String collectionName):
DBCollection coll=db.getCollection("testCollection")
一旦有了这个集合对象,我们就可以很方便地进行其他操作,比如插入、数据查询等。
插入文档:
获取集合对象后,可以将文档-Document插入到该集合中。例如,尝试在 JSON 中创建一个小文档,如下所示:
{"name": "MongoDB", "type": "database", "count": 1, "info": {x: 203, y: 102}}
这样做时,表示系统内部有嵌入的内部文档。为此,请使用 BasicDBObject 类创建文本(包括内部文档ment),然后使用插入语法 () 将其插入到 Collection 中
BasicDBObject doc=new BasicDBObject ();
doc.put("name", "MongoDB");
doc.put("type", "database");
doc.put("count", 1);
BasicDBObject info=new BasicDBObject ();
info.put("x", 203);
info.put("y", 102);
doc.put("info", info);
coll.insert (doc);
使用 findOne () 查找 Collection 中的第一个 Document
要列出并显示上一步插入的文本,我们只需使用 findOne 运算符来获取集合列表中的第一个文档。而且这个方法会返回单个文本(而不是find()操作符找到并返回的DBCursor形式,所以适用于只有1个的情况文本,它们是我们不必“面对”光标:
DBObject myDoc=coll.findOne (); System.out.println (myDoc);
返回结果如下:
{"_id": "49902cde5162504500b45c2c", "name": "MongoDB", "type": "database", "count": 1, "info": {"x": 203, "y": 102}}
请注意,_id 组件会被 MongoDB 自动附加到文档中。请记住,MongoDB 还会自动存储名称以 "_"/"$" 开头的组件,以供以后在内部系统中使用。
分配更多文件:
分配给集合的文档部分将如下所示:
{"i": value}
而要做到这一点,我们只需要应用有效循环:
for (int i=0; i <100; i ++) {coll.insert (new BasicDBObject ().append ("i", i)); } }
请注意,您可以将不同类型的文档插入到同一个集合中,这也意味着MongoDB是一种无模式的形式。
统计集合中的文档:
现在,当我们插入了 101 个文档(包括循环中的 100 个和从头开始的 1 个元素)时,可以检查这些组件是否使用了 getCount() 函数:
System.out.println(coll.getCount());
系统会根据需要返回结果101。
使用光标检索所有文档:
要做到这一点,我们可以使用find()语法返回DBCursor对象,让用户重复查询搜索查询匹配的文本。因此,使用以下命令查询所有 Document 部分并列出它们:
DBCursor cur=coll.find ();
while (cur.hasNext ()) {
System.out.println (cur.next ());
}
系统将显示集合中的全部101个文档。
使用查询语句获取单个文档:
从技术上讲,用户可以创建一个查询语句,将 find() 语法传递给集合中的文本集合。例如,如果要查找字段 i 的值为 71 的任何文本,请遵循以下语法:
BasicDBObject 查询=new BasicDBObject ();
query.put("i", 71);
cur=coll.find (query);
while (cur.hasNext ()) {
System.out.println (cur.next ());
}
系统会准确返回1个文档:
{"_id": "49903677516250c1008d624e", "i": 71}
此外,您经常在MongoDB中看到很多示例和文档或使用$运算符,例如:
db.things.find ({j: {$ ne: 3}, k: {$ gt: 10}});
它们代表 Java 驱动程序 中的 String 键,使用嵌入的 DBObjects 对象:
BasicDBObject 查询=new BasicDBObject ();
query.put("j", new BasicDBObject("$ne", 3));
query.put("k", new BasicDBObject("$gt ", 10));
cur=coll.find (query);
而(cur.hasNext ()) {
System.out.println (cur.next ());
}
使用查询语句获取大量文本:
事实上,我们可以只用一个查询语句从集合中检索多个文档。例如,如果您想列出具有条件“i”> 的整个文本; 50,然后应用以下命令:
query=new BasicDBObject ();
query.put("i", new BasicDBObject("$gt", 50));//例如,找到所有 i> 的地方50
cur=coll.find (query);
while (cur.hasNext ()) {
System.out.println (cur.next ());
}
或条件为20
query=new BasicDBObject ();
query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));//即 20
cur=coll.find (query);
while (cur.hasNext ()) {
System.out.println (cur.next ());
}
创建索引:
MongoDB 支持索引,它们很容易分配给集合。创建索引只需指定要索引的数据字段,排序顺序为升序-升序(1)或降序-降序(-1)。 下面的语句会按照字段 i 的升序生成索引条目:
coll.createIndex (new BasicDBObject ("i", 1));//在“i”上创建索引,升序
获取集合中的索引项列表:
一般命令语法如下:
List list=coll.getIndexInfo ();
for (DBObject o: list) {
System.out.println (o);
}
并且系统会显示返回列表如下:
{"name": "i_1", "ns": "mydb.testCollection", "key": {"i": 1}}
参考管理功能:
首先用命令获取数据库列表:
Mongo m=new Mongo();
for (String s: m.getDatabaseNames ()) {
System.out.println (s);
}
如果要按名称删除数据库,根据Mongo对应的对象类型使用变量:
m.dropDatabase ("my_new_db");
希望以上信息可以帮助您了解MongoDV Java Driver的一些基本特性以及如何在实践中部署和应用。祝你好运!
评论