bugumongo2

28199 단어
DAO 작업
객체 - 문서 맵에서처럼 엔티티 클래스에 주석을 달고 BuguEntity 인터페이스를 구현한 다음 BuguDao 클래스를 사용하여 엔티티를 조작할 수 있습니다.
Bugudao 구조 함수
FooDao와 같은 자신의Dao를 작성해서Foo와 관련된 데이터를 조작해야 합니다.FooDao는 Bugudao에서 계승해야 하고 FooDao의 구조 함수에서 Foo를 전달해야 한다.class:
public class FooDao extends BuguDao<Foo> { 
    public FooDao(){ 
        super(Foo.class); 
    } }

삽입
Bugudao에서는 다음과 같은 방법으로 데이터를 삽입할 수 있습니다.
public void insert(BuguEntity obj) 
 public void insert(List<BuguEntity> list)  //     
 public void save(BuguEntity obj)  //  obj   ID ,    ,  ID ,    。

예:
Foo foo = new Foo(); 
foo.setName("Frank"); 
foo.setLevel(10); 
 FooDao dao = new FooDao(); 
dao.save(foo);

수정
public void save(BuguEntity obj)  //  obj   ID ,    ,  ID ,    。 
 /*       */ public void set(BuguEntity obj, Map values) 
 public void set(String id, Map values) 
 public void set(Query query, Map values) 
 public void set(BuguEntity obj, String key, Object value) 
 public void set(String id, String key, Object value) 
 /*   、     */ 
 public void inc(BuguEntity obj, String key, Object value) 
 public void inc(String id, String key, Object value) 
 public void inc(Query query, String key, Object value) 
 /*       */ 
 public void unset(BuguEntity entity, String key) 
 public void unset(String id, String key) 
 public void unset(Query query, String key)

예:
FooDao dao = new FooDao(); Foo foo = dao.query().is("name", "Frank").result(); 
 
dao.set(foo, "level", 9);  // foo level    9 
 // foo name  “John”,level   20 Map newValues = new HashMap(); 
newValues.put("name", "John"); 
newValues.put("level", 20); 
dao.set(foo, newValues); 
 
dao.inc(foo, "level", 100);  // foo level   100 
dao.inc(foo, "level", -50);  // foo level   50 
 
dao.unset(foo, "level");  //  foo    level

삭제
public void drop()  //     
 public void remove(BuguEntity obj) 
 public void remove(String id) 
 public void remove(String... ids)  //     
 public void remove(String key, Object value)  //      
 public void remove(Query query)  //     

배열, 목록 작업
public void push(BuguEntity obj, String key, Object value) 
 public void push(String id, String key, Object value) 
 public void pull(BuguEntity obj, String key, Object value) 
 public void pull(String id, String key, Object value)

그룹,List,Set은 몬goDB에 모두 그룹으로 저장되어 있으며,push,pull 방법으로 조작할 수 있습니다.
조회
질의에는 Query 클래스가 필요합니다.먼저 Query 클래스의 몇 가지 방법을 살펴보십시오.
질의 조건을 생성하려면 다음과 같이 하십시오.
public Query<T> is(String key, Object value) 
 public Query<T> notEquals(String key, Object value) 
 public Query<T> greaterThan(String key, Object value) 
 public Query<T> greaterThanEquals(String key, Object value) 
 public Query<T> lessThan(String key, Object value) 
 public Query<T> lessThanEquals(String key, Object value) 
 public Query<T> in(String key, Object... values) 
 public Query<T> notIn(String key, Object... values) 
 public Query<T> all(String key, Object... values) 
 public Query<T> size(String key, int value) 
 public Query<T> mod(String key, int divisor, int remainder) 
 public Query<T> existsField(String key) 
 public Query<T> notExistsField(String key){ 
 public Query<T> regex(String key, String regex) 
 public Query<T> or(Query... qs) 
 public Query<T> and(Query... qs)

지리적 공간 데이터 조회:
public Query<T> near(String key, double x, double y) 
 public Query<T> near(String key, double x, double y, double maxDistance) 
 public Query<T> withinCenter(String key, double x, double y, double radius) 
 public Query<T> withinBox(String key, double x1, double y1, double x2, double y2)

질의 매개변수를 설정하려면 다음과 같이 하십시오.
public Query<T> sort(String orderBy) 
 public Query<T> pageNumber(int pageNumber) 
 public Query<T> pageSize(int pageSize)

질의 결과를 반환하려면 다음과 같이 하십시오.
public T result()  //       
 public List<T> results()  //       
 public long count() 
 public boolean exists() 
 public List distinct(String key)

Query 만들기
Bugudao에서query() 방법을 호출하여 Query 객체를 만들 수 있습니다.
public class FooDao extends BuguDao<Foo> { 
    public FooDao(){ 
        super(Foo.class); 
    } 
    ... } 
 FooDao dao = new FooDao(); Query<Foo> q = dao.query(); ...

Query로 쿼리 수행하기
연결 쓰기 지원
List<Foo> list = dao.query().greaterThan("level", 10).notEquals("name", "Frank").results();

페이지 나누기 지원
List<Foo> list = dao.query().greaterThan("level", 10).notEquals("name", "Frank").pageNumber(1).pageSize(20).results();

질의 기준으로 Entity 객체 지원
FatherDao fDao = new FatherDao(); FatherFoo father = fDao.query().is("id", "4dcb4d1d3febc6503e4e5933").result(); 
 Foo foo = dao.query().is("father", father).result();  // FatherFoo        

문자열 형식의 정렬 지원
List<Foo> list = dao.query().in("name", "Frank", "John").sort("{level:1, timestamp: -1}").results();

정렬 문자열의 쓰기 규칙은 여기를 참고하십시오.
여러 조건을 지원하는 and, or 부울 조합 조회
Query<Foo> q1 = dao.query().greaterThan("level", 10); Query<Foo> q2 = dao.query().is("name", "John"); List<Foo> list = dao.query().or(q1, q2).results();

주의: and 작업은 몬goDB 2.0 이후에만 지원되며 and 작업은 거의 필요하지 않습니다. Query의 연결 서술 형식은 여러 조건의'과'논리에 따라 조합된 것입니다.두 or 조건을 연결하는 데 사용되는 and 작업의 예는 다음과 같습니다.
Query q1 = dao.query().is("level", 10); Query q2 = dao.query().is("level", 20); Query or1 = dao.query().or(q1, q2); Query q3 = dao.query().is("name", "Frank"); Query q4 = dao.query().is("name", "John"); Query or2 = dao.query().or(q3, q4); List list = dao.query().and(or1, or2).results();

AdvancedDao
AdvancedDao는 Bugudao의 하위 클래스로 주로 MapReduce 기능과 MapReduce를 바탕으로 이루어진 고급 통계 기능을 제공합니다.그러나 현재 MongoDB의MapReduce 성능이 좋지 않기 때문에 데이터 양이 매우 많으면 조심스럽게 사용하십시오.
AdvancedDao의 방법은 다음과 같습니다.
통계:
public double max(String key) 
 public double max(String key, Query query) 
 public double min(String key) 
 public double min(String key, Query query) 
 public double sum(String key) 
 public double sum(String key, Query query)

그룹화:
public Iterable<DBObject> group(GroupCommand cmd) 
 public Iterable<DBObject> group(DBObject key, DBObject query, DBObject initial, String reduce) 
 public Iterable<DBObject> group(DBObject key, DBObject query, DBObject initial, String reduce, String finalize)

MapReduce:
public Iterable<DBObject> mapReduce(MapReduceCommand cmd) 
 public Iterable<DBObject> mapReduce(String map, String reduce) 
 public Iterable<DBObject> mapReduce(String map, String reduce, DBObject query)  
 public Iterable<DBObject> mapReduce(String map, String reduce, String outputTarget, MapReduceCommand.OutputType outputType, DBObject sort, DBObject query) 
 public Iterable<DBObject> mapReduce(String map, String reduce, String outputTarget, MapReduceCommand.OutputType outputType, DBObject sort, int pageNum, int pageSize, DBObject query)

코드 예:
//   AdvancedDao public class FooDao extends AdvancedDao{ 
    public FooDao(){ 
        super(Foo.class); 
    } } 
 

좋은 웹페이지 즐겨찾기