zll00561的专栏

connection

数据库为每一个MongoDB数据库连接创建一个队列,一个连接可以保证先后顺序。 MongoClient自带连接池保持多个连接。DB and DBCollection are completely thread safe. In fact, they are cached so you get the same instance no matter what.我理解为对于每一个数据库或集合始终使用一个连接,保证数据一致。 程序退出时,调用MongoClient.close() to clean up resources。

// To directly connect to a single MongoDB server (note that this will not auto-discover the primary even// if it’s a member of a replica set:MongoClient mongoClient = new MongoClient();// orMongoClient mongoClient = new MongoClient( “localhost” );// orMongoClient mongoClient = new MongoClient( “localhost” , 27017 );// or, to connect to a replica set, with auto-discovery of the primary, supply a seed list of membersMongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress(“localhost”, 27017),new ServerAddress(“localhost”, 27018),new ServerAddress(“localhost”, 27019)));// or use a connection stringMongoClient mongoClient = new MongoClient(new MongoClientURI(“mongodb://localhost:27017,localhost:27018,localhost:27019”));MongoDatabase database = mongoClient.getDatabase(“mydb”);创建DB

如果DB不存在,第一次操作(insert,update)时自动创建。

Collection

collection如果不存在,当插入第一个文档时自动创建。 DBCollection.createCollecton(String)特指创建固定集合。固定集合要事先创建,大小固定。新文档插入时自动淘汰最早的文档。固定集合使用场景是自动淘汰过期属性。用法之一是oplog(数据同步)

MongoCollection<Document> coll = db.getCollection(“testCollection”);// 固定集合database.createCollection(“cappedCollection”, new CreateCollectionOptions().capped(true).sizeInBytes(0x100000));Write Concern

MongoDB为了追求高速度,对于修改数据库的操作提供瞬间完成模式UNACKNOWLEDGED。函数发出命令后马上返回,不等待结果。

mongoClient.setWriteConcern(WriteConcern.JOURNALED);查找

查找有两种方法

更新

不想写了,看代码吧

Index

index保存在system.index表中,驱动生成index名称的规则不同,可以用shell查看mycol.getIndexes()查看。

myColl.createIndex(new BasicDBObject(“uid”, 1).append(“type”, 1));//1升序 -1降序myColl.createIndex(new BasicDBObject(“type”, -1)); myColl.dropIndex(“type_-1”);//按名字删除myColl.dropIndexes();//删除所有

实例代码,里面省略了异常处理。比如删除index,如果index不存在会报错的

package mongodb.demo;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.bson.Document;import static com.mongodb.client.model.Filters.*;import com.mongodb.BasicDBObject;import com.mongodb.DBCollection;import com.mongodb.InsertOptions;import com.mongodb.MongoClient;import com.mongodb.WriteConcern;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.model.InsertManyOptions;import com.mongodb.client.model.UpdateOptions;{private MongoClient mongoClient;private MongoDatabase db;private static Curd instance = null;public static Curd getInstance(){if(instance == null){instance = new Curd();}return instance;}protected Curd() {// TODO Auto-generated constructor stub}(){if(mongoClient != null) return true;mongoClient = new MongoClient(“localhost”,27017);if(mongoClient != null) {db = mongoClient.getDatabase(“test”);return true;}else {System.out.println(“connect MongoDB server fail”);return false;}}public static Document newMeter(int uid, int type, String value){Document meter = new Document(“uid”,uid).append(“type”, type).append(“content”, new Document(“type”,type).append(“value”, value)).append(“updatetime”, new Date());return meter;}(){//insert oneMongoCollection<Document> coll = db.getCollection(“meters”);Document meter;InsertOptions option = new InsertOptions();option.writeConcern(WriteConcern.ACKNOWLEDGED);for(int i=0; i<50; i++){meter = newMeter(1234567,i,”insertOne”);coll.insertOne(meter);}}(){List<Document> documents = new ArrayList<Document>();for(int i=0; i<50; i++){documents.add(newMeter(7654321,i,”insertMany”));}MongoCollection<Document> coll = db.getCollection(“meters”);InsertManyOptions option = new InsertManyOptions();option.ordered(true);coll.insertMany(documents,option);}(){MongoCollection<Document> coll = db.getCollection(“meters”);Document myDoc = coll.find(new BasicDBObject(“uid”,1234567).append(“type”,0)).first();System.out.println(myDoc);}(){MongoCollection<Document> coll = db.getCollection(“meters”);//import static com.mongodb.client.model.Filters.*; manullyDocument myDoc = coll.find(and(eq(“uid”,1234567),eq(“type”,0))).first();System.out.println(myDoc);}(){MongoCollection<Document> coll = db.getCollection(“meters”);MongoCursor<Document> cursor = coll.find(eq(“uid”,1234567)).iterator();try {while (cursor.hasNext()) {System.out.println(cursor.next());}} finally {cursor.close();}}(){MongoCollection<Document> coll = db.getCollection(“meters”);//UpdateOptions options = new UpdateOptions();//options.upsert(true);//update or addcoll.findOneAndUpdate(and(eq(“uid”,1234567),eq(“type”,0)), new Document(“content.value”,”updateWhole”));}(){MongoCollection<Document> coll = db.getCollection(“meters”);Document modifiedObject = new Document();modifiedObject.put(“$set”, new Document().append(“comment”, “updateModifier”));coll.updateOne(and(eq(“uid”,1234567),eq(“type”,0)),modifiedObject);}(){MongoCollection<Document> meters = db.getCollection(“meters”);meters.createIndex(new BasicDBObject(“uid”, 1).append(“type”, 1));meters.createIndex(new BasicDBObject(“type”, -1));}(){MongoCollection<Document> meters = db.getCollection(“meters”);meters.dropIndex(“type_-1”);//meters.dropIndexes();}(){MongoCollection<Document> meters = db.getCollection(“meters”);meters.dropCollection();}/*** @param args*/(String[] args) {Curd instance = Curd.getInstance();instance.init();instance.createIndex();////drop indexinstance.dropIndex();//////delete}}

,莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法

zll00561的专栏

相关文章:

你感兴趣的文章:

标签云: