bugumongo2
객체 - 문서 맵에서처럼 엔티티 클래스에 주석을 달고 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);
} }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.