MongoDB Java驱动连接基础知识

Java连接
import com.mongodb.Mongo;
import com.mongodb.DB;

Mongo m = new Mongo();
Mongo m = new Mongo(“localhost”);
Mongo m = new Mongo(“localhost”, 27017);

DB db = m.getDB(“mydb”);

使用集合
从数据库中获取所有的集合

Set colls=db.getCollectionNames();
for(String s:colls) {
   System.out.println(s);
}

获取单一的集合

DBCollection coll = db.getCollection(“testCollection”);

插入文档

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);

BasicDBObjectBuilder——编译对象
强制转换Maps成DBObjects,示例:

BasicDBObjectBuilder.start()
.add(“name”, “eliot”);
.add(“number”, 17)
.get();
DBObject myDoc = coll.findOne();
BasicDBObject query = new BasicDBObject();
query.put(“i”, 71);
DBCursor cur = coll.find(query);

GridFS
文件大小小于4MB的存储机制
允许部分或无序读取块文件
块结构对底层操作系统是透明的
可以在buckets存储文件,MongoDB metaphor
默认是fs bucket

保存文件到GridFS中

def mongo = new Mongo(host)
def gridfs = new GridFS(mongo.getDB(”db”))

def save(inputStream, contentType, filename) {
   def inputFile = gridfs.createFile(inputStream);
   inputFile.setContentType(contentType)
   inputFile.setFilename(filename)
   inputFile.save()
}

检索/删除文件

def retrieveFile(String filename) {
   return gridfs.findOne(filename)
}

def deleteFile(String filename) {
   gridfs.remove(filename)
}

2.Morphia
Apache 2授权
引入了Hibernate/JPA
允许POJOs,实现MongoDB和Java之间转换
支持DAO抽象
支持type-safe查询
兼容GWT、Guice、Spring和DI框架
Morphia注解
@Id
@Entity
@Embedded
@Reference
@Indexed
@Serialized
@Property
创建Morphia POJO

import com.google.code.morphia.annotations.*;

@Entity(“collectionName”)
public class Contact{
   @Id
   private String id; //由MongoDB产生
   private String firstName;
   private String lastName;
   @Embedded
   Private List phoneNumbers;

   //getter 和 setter
}

映射POJO到Mongo文档中

Morphia morphia = …;
Mongo mongo = …;
DB db = mongo.getDB(“contacts”);
Contact contact = …;
//映射contact成DBObject
DBObject contactObj = morphia.toDBObject(contact);
Db.getCollection(“personal”).save(contactObj);

从Mongo文档中读取POJO

Morphia morphia = …;
Mongo mongo = …;
DB db = mongo.getDB(“contacts”);

String contactId = …;
//从集合中加载对象
BasicDBObject idObj = new BasicDBObject(“_id”, new ObjectId(contactId));
BasicDBObjec obj = (BasicDBObject) db.getCollection(“personal”).findOne(idObj);
Contact contact = morphia.fromDBObject(Contact.class, obj);

DAOs
封装保存和检索对象
POJOs进出的自动转换
可以约束搜索
关键函数:get(),find()或find(constraits),findOne(constraints),deleteById()
 DAO示例

import com.mongodb.Mongo
import com.google.code.morphia.*;

class EntryDAO extends DAO {
   public EntryDAO(Morphia morphia, Mongo mongo) {
      super(mongo, morphia, “entries”);
}
}

 约束例子

dao.find(new Contrainst()
orderByDesc(“dateCreated”)
).asList()

dao.find(
new Constraits()
.field(“dateCreated”).greaterThanOrEqualTo(date).field(“title”).
equalTo(params.title)
).asList()


 

猜你喜欢

转载自blog.csdn.net/stonezgjoper/article/details/7361055