1、DBCollection的管理
package com.boonya.mongo;
import java.util.Set;
import com.mongodb.DBCollection;
public class CollectionManager {
public static DBCollection getDbCollection(String collectionName){
return DBConnection.getInstance().getCollection(collectionName.equals("")?"myCollection":collectionName);
}
public String getCollectionNames(){
String strNames="";
Set<String> colls =DBConnection.getInstance().getCollectionNames();
for (String cname : colls) {
strNames+=cname+",";
}
return strNames;
}
}
2、并发操作管理
package com.boonya.mongo;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.WriteConcern;
public class ConcurrencyManager {
private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
/**
* If you want to ensure complete consistency in a “session” (maybe an http request),
* you would want the driver to use the same socket, which you can achieve by using a
* “consistent request”. Call requestStart() before your operations and requestDone()
* to release the connection back to the pool:
* DB and DBCollection are completely thread safe. In fact, they are cached so you get
* the same instance no matter what
*/
public void insertData(){
DB db=DBConnection.getInstance();
db.requestStart();
try {
db.requestEnsureConnection();
//do something
} finally {
db.requestDone();
}
}
/**
* Since by default a connection is given back to the pool after each request, you may
* wonder how calling getLastError() works after a write. You should actually use a
* write concern like WriteConcern.SAFE instead of calling getLastError() manually.
* The driver will then call getLastError() before putting the connection back in the pool.
*
* WriteConcern.NONE No exceptions thrown.
* WriteConcern.NORMAL Exceptions are only thrown when the primary node is unreachable for
* a read, or the full replica set is unreachable.
* WriteConcern.SAFE Same as the above, but exceptions thrown when there is a server error
* on writes or reads. Calls getLastError().
* WriteConcern.REPLICAS_SAFE Tries to write to two separate nodes. Same as the above, but
* will throw an exception if two writes are not possible.
* WriteConcern.FSYNC_SAFE Same as WriteConcern.SAFE, but also waits for write to be written to disk.
*
*/
public void writeConcern(){
coll.insert(new BasicDBObject("name","boonya").append("age", 21), WriteConcern.SAFE);
// is equivalent to
DB db=DBConnection.getInstance();
DBCollection coll=CollectionManager.getDbCollection("myCollection");
db.requestStart();
try {
coll.insert(new BasicDBObject("name","boonya").append("age", 21));
DBObject err = db.getLastError();
System.out.println(err);
} finally {
db.requestDone();
}
}
}
3、数据库管理
package com.boonya.mongo;
import java.net.UnknownHostException;
import com.mongodb.MongoClient;
public class DatabaseManager {
public String getDatabaseNames() throws UnknownHostException{
String strNames="";
MongoClient mongoClient;
mongoClient = new MongoClient();
for (String name : mongoClient.getDatabaseNames()) {
strNames+=name+",";
}
return strNames;
}
public void dropDatabase(String databaseName) throws UnknownHostException{
MongoClient mongoClient = new MongoClient();
mongoClient.dropDatabase(databaseName);
}
}
4、文档管理
package com.boonya.mongo;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
public class DocumentManager {
private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
public void insertADocument(){
BasicDBObject doc = new BasicDBObject("name", "MongoDB").append("type", "database")
.append("count", 1)
.append("info", new BasicDBObject("x", 203).append("y", 102));
coll.insert(doc);
}
/**
* PRINT BELOW:
* { "_id" : "49902cde5162504500b45c2c" ,
* "name" : "MongoDB" ,
* "type" : "database" ,
* "count" : 1 ,
* "info" : { "x" : 203 , "y" : 102}}
* @return
*/
public DBObject findTheFirstDocument(){
System.out.println("collection count:"+coll.getCount());
DBObject myDoc = coll.findOne();
System.out.println(myDoc);
return myDoc;
}
public List<DBObject> getADocumentsByCursor(){
List<DBObject> docs=new ArrayList<DBObject>();
DBCursor cursor =coll.find();
try {
while(cursor.hasNext()) {
DBObject obj=cursor.next();
System.out.println(obj);
docs.add(obj);
}
return docs;
} finally {
cursor.close();
}
}
/**
* PRINT LIKE THIS:
* { "_id" : "49903677516250c1008d624e" , "i" : 71 }
*/
public void queryADocument(){
BasicDBObject query = new BasicDBObject("i", 71);
DBCursor cursor =coll.find();
cursor = coll.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}
public void editQueryRegular(){
//db.things.find({j: {$ne: 3}, k: {$gt: 10} });
BasicDBObject query = new BasicDBObject("j", new BasicDBObject("$ne", 3)
.append("k", new BasicDBObject("$gt", 10)));
DBCursor cursor = coll.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}
public void getAsetDocument(){
BasicDBObject query = new BasicDBObject("i", new BasicDBObject("$gt", 50)); // e.g. find all where i > 50
// query = new BasicDBObject("i", new BasicDBObject("$gt", 20).
// append("$lte", 30)); // i.e. 20 < i <= 30
DBCursor cursor = coll.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}
}
5、索引管理
package com.boonya.mongo;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
public class IndexManager {
private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
public void createIndex(){
// create index on "i", ascending
coll.createIndex(new BasicDBObject("i", 1));
}
public List<DBObject> getIndexList(){
List<DBObject> list = coll.getIndexInfo();
for (DBObject o : list) {
System.out.println(o);
list.add(o);
}
return list;
}
}
6、预读取机制
package com.boonya.mongo;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.ReadPreference;
public class ReadPreferences {
private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
/**
* ReadPreference.primary();
* ReadPreference.primaryPreferred();
* ReadPreference.secondary();
* ReadPreference.secondaryPreferred();
* ReadPreference.nearest();
*/
public void read(){
DBObject query = new BasicDBObject("name", "simple doc");
//Read from primary if available, otherwise a secondary.
ReadPreference preference = ReadPreference.primaryPreferred();
DBCursor cur = new DBCursor(coll, query, (DBObject) preference);
//Read from any member node from the set of nodes which respond the fastest.
//The responsiveness of a node is measured with pings. Any node whose ping
//time is within 15 milliseconds of the node with the lowest ping time is considered near.
DBObject result =coll.findOne(query, (DBObject) ReadPreference.nearest());
// initialize a properly tagged read preference
ReadPreference tagged_pref =ReadPreference.secondaryPreferred(new BasicDBObject("datacenter", "Los Angeles"));
// include the tagged read preference in this request}}
DBObject result1=coll.findOne(new BasicDBObject("name", "simple doc"), (DBObject) tagged_pref);
// read from either LA or US_West
DBObject tagSetOne = new BasicDBObject("datacenter", "Los Angeles");
DBObject tagSetTwo = new BasicDBObject("region", "US_West");
ReadPreference pref =ReadPreference.primaryPreferred(tagSetOne, tagSetTwo);
}
}
分享到:
相关推荐
MongoDB是一种流行的开源、分布式NoSQL数据库系统,以其高性能、高可用性和可扩展性而备受赞誉。MongoDB采用文档型数据模型,支持JSON格式的数据存储,使得它在处理半结构化和非结构化数据时非常灵活。在这个Java...
- **MongoDB常用API总结**:提供了一系列API,包括插入、查询、更新和删除等操作。 - **Redis命令总结**:覆盖了连接操作、数据操作、持久化策略等方面的常用命令。 通过对MongoDB和Redis这两种NoSQL数据库的详细...
适合人群:初级到中级的数据库管理员和开发者,特别是那些希望学习和掌握NoSQL数据库基本操作的人群。 使用场景及目标:本指南主要适用于学习和理解MongoDB的常用操作及其在Java应用程序中的实现。读者可以按部就班...
MongoDB是一种流行的开源NoSQL数据库,它以JSON格式存储数据,具有高性能、高可用性和可扩展性的特点。在Linux环境中,MongoDB的配置是运维工作中的重要环节,它关系到数据库的稳定运行和性能优化。本篇将深入探讨...
MongoDB是一款流行且功能强大的NoSQL数据库系统,以其灵活性、高性能和易扩展性而闻名。MongoDB数据库管理工具则是为了帮助用户更有效地管理和操作MongoDB数据库而设计的软件。MongoVUE是其中的一款常用工具,它提供...
本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出...学员从中可领会到MongoDB设计的精妙之处,体会到MongoDB强大的类sql查询语言,感受到MongoDB与其它Nosql数据库的异同之处。(教程下载地址在文本里面)
接下来将详细介绍文档中出现的MongoDB常用管理命令及其相关的知识点。 1. 启动MongoDB服务 - `mongod` 是MongoDB数据库服务器的命令行工具,用于启动数据库实例。 - 通常需要指定`--dbpath`参数来指定数据库存储...
MongoDB 是一种流行的开源非关系型数据库(NoSQL),它以文档为模型,使用类似于 JSON 的 BSON 格式进行数据存储。MongoDB 具有强大的查询和索引功能,并且支持各种语言的驱动程序,例如 Java、Python、C#等。在...
这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDBTemplate是Spring Data MongoDB的核心组件,它提供了丰富的API来执行常见的数据库操作。 首先,让我们深入...
Python是与MongoDB交互的常用编程语言之一,提供了PyMongo库,使得在Python环境中操作MongoDB变得简单易行。在这个话题中,我们将探讨如何使用Python进行MongoDB的基本操作,包括连接数据库、创建集合、插入文档、...
什么是 MongoDB MongoDB 简介 MongoDB 特点 安装与配置 安装 MongoDB 启动与配置 MongoDB 基本操作 数据库和集合 文档操作 查询操作 基本查询 高级查询 索引与性能优化 创建索引 索引类型 索引优化 聚合操作 聚合...
在.NET开发环境中,C#是一种常用的编程语言,而MongoDB则是一种流行的NoSQL数据库系统,以其灵活的数据模型和高性能著称。"C#MongoDb操作工具类"是将C#与MongoDB结合,用于简化数据库操作的一组自定义类。通过这样的...
对于NoSQL数据库HBase、Redis和MongoDB,虽然没有提供具体的操作步骤,但通常它们的使用包括安装相应的客户端工具,学习其特定的命令行语法或者Java API,例如HBase的HBase Shell、Redis的`redis-cli`和MongoDB的...
在NoSQL数据库的世界里,MongoDB因其灵活的数据模型、高性能和可扩展性而备受青睐。查询作为数据库操作中最基础也是最重要的功能之一,在MongoDB中同样有着丰富的语法支持。本文将详细介绍MongoDB中的查询功能,包括...
MongoDB是当前流行的NoSQL数据库之一,它以其高性能、易扩展、高可用性的特点,得到了众多开发者的青睐。作为文档型数据库的代表,MongoDB使用的是BSON(一种类似JSON的二进制形式)格式存储数据,它与传统的关系型...
这篇博文中,我们将深入讨论Java与NoSQL数据库的集成,特别是MongoDB作为示例,因为MongoDB是Java开发者常用的NoSQL数据库之一。 描述中提到的“NULL”可能意味着博主没有提供具体的细节,但我们可以通过通用的Java...
系统的学习MongoDB从入门到进阶,掌握现在火爆的NoSQL技术之一。 选择MongoDB的原因及其优势 MongoDB单机部署、副本集部署、分片部署以及相关操作 MongoDB的客户端连接和常用命令操作 SpringDataMongoDB对MongoDB的...
MongoDB 是 NoSQL 数据库系统中比较流行的数据库之一。它也是最接近关系型数据库的,一个数据库可以包含多个集合(Collection),类似于关系数据库中的表;而每个集合中可以存储一组由列标识的记录,列是可以自由...