生活哲学

了解 MongoDB 中的 Java 驱动程序

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 类被专门设计为一个安全线程,并且可以在许多不同的线程之间轻松共享。通常,您只需要为集群数据库创建一个示例并在整个应用程序中使用它。如果您遇到我们被迫创建许多变量的特殊情况,请注意:

  1. 资源使用限制(最大连接数。)应用于变量。
  2. 要关闭变量,请使用 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的一些基本特性以及如何在实践中部署和应用。祝你好运!

相关资讯

评论

回复