어떻게 자바 로 MongoDB 를 조작 합 니까?
36006 단어 mongodb
개발 환경:
개발 의존 라 이브 러 리:
준비 작업
1. 우선, mongoDB 가 자바 에 지원 하 는 드라이버 패 키 지 를 다운로드 합 니 다.
드라이버 다운로드 주소:https://github.com/mongodb/mongo-java-driver/downloads
mongoDB 의 자바 관련 지원, 기술:http://www.mongodb.org/display/DOCS/Java+Language+Center
드라이버 원본 다운로드:https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip
온라인 으로 원본 보기:https://github.com/mongodb/mongo-java-driver
2. 아래 에 자바 프로젝트 프로젝트 프로젝트 를 만 들 고 다운로드 한 드라이버 패 키 지 를 가 져 옵 니 다.자바 에서 mongoDB 를 사용 할 수 있 습 니 다. 디 렉 터 리 는 다음 과 같 습 니 다.
#FormatImgID_0#
2. 자바 조작 MongoDB 예제
이 예제 에 앞서 mongod. exe 서 비 스 를 시작 해 야 다음 프로그램 이 순조롭게 실 행 될 수 있 습 니 다.
1. Simple Test. java 를 구축 하여 간단 한 mongoDB 데이터베이스 작업 을 완성 합 니 다.
Mongo mongo = new Mongo();
이렇게 해서 MongoDB 의 데이터베이스 연결 대상 을 만 들 었 습 니 다. 현재 기기 의 localhost 주소 에 기본적으로 연결 되 어 있 고 포트 는 27017 입 니 다.
DB db = mongo.getDB(“test”);
이렇게 해서 test 데이터 베 이 스 를 얻 었 습 니 다. 만약 mongoDB 에서 이 데이터 베 이 스 를 만 들 지 않 았 다 면 정상적으로 실행 할 수 있 습 니 다.이전 글 을 읽 어보 면 mongoDB 는 이 데이터 베 이 스 를 만 들 지 않 은 상태 에서 데이터 추가 작업 을 완성 할 수 있다 는 것 을 알 수 있다.추가 할 때 이 라 이브 러 리 가 없 으 면 mongoDB 는 현재 데이터 베 이 스 를 자동 으로 만 듭 니 다.
db 를 얻 었 습 니 다. 다음 단 계 는 '집합 DB Collection' 을 얻 고 db 대상 의 getCollection 방법 을 통 해 완성 해 야 합 니 다.
DBCollection users = db.getCollection("users");
이렇게 해서 DB Collection 을 얻 었 습 니 다. 이것 은 우리 데이터베이스 의 '표' 에 해당 합 니 다.
모든 데이터 조회
- package com.hoo.test;
-
- import java.net.UnknownHostException;
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.DBCursor;
- import com.mongodb.Mongo;
- import com.mongodb.MongoException;
- import com.mongodb.util.JSON;
-
- /**
- * function: MongoDB
- * @author hoojo
- * @createDate 2011-5-24 02:42:29
- * @file SimpleTest.java
- * @package com.hoo.test
- * @project MongoDB
- * @blog http://blog.csdn.net/IBM_hoojo
- * @email [email protected]
- * @version 1.0
- */
- public class SimpleTest {
-
- public static void main(String[] args) throws UnknownHostException, MongoException {
- Mongo mg = new Mongo();
- // Database
- for (String name : mg.getDatabaseNames()) {
- System.out.println( "dbName: " + name);
- }
-
- DB db = mg.getDB( "test" );
- //
- for (String name : db.getCollectionNames()) {
- System.out.println( "collectionName: " + name);
- }
-
- DBCollection users = db.getCollection( "users" );
-
- //
- DBCursor cur = users.find();
- while (cur.hasNext()) {
- System.out.println(cur.next());
- }
- System.out.println(cur.count());
- System.out.println(cur.getCursorId());
- System.out.println(JSON.serialize(cur));
- }
- }
2、 CRUD 작업 을 완료 하려 면 먼저 MongoDB4CRUDTest. java 를 만 듭 니 다. 기본 테스트 코드 는 다음 과 같 습 니 다.
- package com.hoo.test;
-
-
- import java.net.UnknownHostException;
- import java.util.ArrayList;
- import java.util.List;
- import org.bson.types.ObjectId;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import com.mongodb.BasicDBObject;
- import com.mongodb.Bytes;
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.DBCursor;
- import com.mongodb.DBObject;
- import com.mongodb.Mongo;
- import com.mongodb.MongoException;
- import com.mongodb.QueryOperators;
- import com.mongodb.util.JSON;
-
- /**
- * function: MongoDB CRUD
- * @author hoojo
- * @createDate 2011-6-2 03:21:23
- * @file MongoDB4CRUDTest.java
- * @package com.hoo.test
- * @project MongoDB
- * @blog http://blog.csdn.net/IBM_hoojo
- * @email [email protected]
- * @version 1.0
- */
- public class MongoDB4CRUDTest {
-
- private Mongo mg = null ;
- private DB db;
- private DBCollection users;
-
- @Before
- public void init() {
- try {
- mg = new Mongo();
- //mg = new Mongo("localhost", 27017);
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (MongoException e) {
- e.printStackTrace();
- }
- // temp DB; ,mongodb
- db = mg.getDB( "temp" );
- // users DBCollection; ,mongodb
- users = db.getCollection( "users" );
- }
-
-
- @After
- public void destory() {
- if (mg != null )
- mg.close();
- mg = null ;
- db = null ;
- users = null ;
- System.gc();
- }
- public void print(Object o) {
- System.out.println(o);
- }
- }
3. 조작 추가
작업 을 추가 하기 전에 우 리 는 모든 데 이 터 를 조회 하기 위해 조회 방법 을 써 야 한다.코드 는 다음 과 같 습 니 다:
- /**
- * function:
- * @author hoojo
- * @createDate 2011-6-2 03:22:40
- */
- private void queryAll() {
- print( " users :" );
- //db
- DBCursor cur = users.find();
- while (cur.hasNext()) {
- print(cur.next());
- }
- }
-
- @Test
- public void add() {
- //
- queryAll();
- print( "count: " + users.count());
-
- DBObject user = new BasicDBObject();
- user.put( "name" , "hoojo" );
- user.put( "age" , 24 );
- //users.save(user) ,getN()
- //print(users.save(user).getN());
-
- // , ,
- user.put( "sex" , " " );
- print(users.save(user).getN());
-
- // , Array
- print(users.insert(user, new BasicDBObject( "name" , "tom" )).getN());
-
- // List
- List list = new ArrayList();
- list.add(user);
- DBObject user2 = new BasicDBObject( "name" , "lucy" );
- user.put( "age" , 22 );
- list.add(user2);
- // List
- print(users.insert(list).getN());
-
- // ,
- print( "count: " + users.count());
- queryAll();
- }
4. 데이터 삭제
- @Test
- public void remove() {
- queryAll();
- print( " id = 4de73f7acd812d61b4626a77:" + users.remove( new BasicDBObject( "_id" , new ObjectId( "4de73f7acd812d61b4626a77" ))).getN());
- print( "remove age >= 24: " + users.remove( new BasicDBObject( "age" , new BasicDBObject( "$gte" , 24 ))).getN());
- }
5. 데이터 수정
- @Test
- public void modify() {
- print( " :" + users.update( new BasicDBObject( "_id" , new ObjectId( "4dde25d06be7c53ffbd70906" )), new BasicDBObject( "age" , 99 )).getN());
- print( " :" + users.update(
- new BasicDBObject( "_id" , new ObjectId( "4dde2b06feb038463ff09042" )),
- new BasicDBObject( "age" , 121 ),
- true , // ,
- false //
- ).getN());
- print( " :" + users.update(
- new BasicDBObject( "name" , "haha" ),
- new BasicDBObject( "name" , "dingding" ),
- true , // ,
- true //false ,true
- ).getN());
-
- // 、 ,
- //print(" :" + coll.updateMulti(new BasicDBObject("_id", new ObjectId("4dde23616be7c19df07db42c")), new BasicDBObject("name", "199")));
- }
6. 조회 데이터
- @Test
- public void query() {
- //
- //queryAll();
-
- // id = 4de73f7acd812d61b4626a77
- print( "find id = 4de73f7acd812d61b4626a77: " + users.find( new BasicDBObject( "_id" , new ObjectId( "4de73f7acd812d61b4626a77" ))).toArray());
-
- // age = 24
- print( "find age = 24: " + users.find( new BasicDBObject( "age" , 24 )).toArray());
-
- // age >= 24
- print( "find age >= 24: " + users.find( new BasicDBObject( "age" , new BasicDBObject( "$gte" , 24 ))).toArray());
- print( "find age <= 24: " + users.find( new BasicDBObject( "age" , new BasicDBObject( "$lte" , 24 ))).toArray());
-
- print( " age!=25:" + users.find( new BasicDBObject( "age" , new BasicDBObject( "$ne" , 25 ))).toArray());
- print( " age in 25/26/27:" + users.find( new BasicDBObject( "age" , new BasicDBObject(QueryOperators.IN, new int [] { 25 , 26 , 27 }))).toArray());
- print( " age not in 25/26/27:" + users.find( new BasicDBObject( "age" , new BasicDBObject(QueryOperators.NIN, new int [] { 25 , 26 , 27 }))).toArray());
- print( " age exists :" + users.find( new BasicDBObject( "age" , new BasicDBObject(QueryOperators.EXISTS, true ))).toArray());
-
- print( " age :" + users.find( null , new BasicDBObject( "age" , true )).toArray());
- print( " :" + users.find( null , new BasicDBObject( "age" , true ), 0 , 2 ).toArray());
- print( " :" + users.find( null , new BasicDBObject( "age" , true ), 0 , 2 , Bytes.QUERYOPTION_NOTIMEOUT).toArray());
-
- // ,
- print( "findOne: " + users.findOne());
- print( "findOne: " + users.findOne( new BasicDBObject( "age" , 26 )));
- print( "findOne: " + users.findOne( new BasicDBObject( "age" , 26 ), new BasicDBObject( "name" , true )));
-
- // 、
- print( "findAndRemove age=25 , : " + users.findAndRemove( new BasicDBObject( "age" , 25 )));
-
- // age=26 , name Abc
- print( "findAndModify: " + users.findAndModify( new BasicDBObject( "age" , 26 ), new BasicDBObject( "name" , "Abc" )));
- print( "findAndModify: " + users.findAndModify(
- new BasicDBObject( "age" , 28 ), // age=28
- new BasicDBObject( "name" , true ), // name
- new BasicDBObject( "age" , true ), // age
- false , // ,true
- new BasicDBObject( "name" , "Abc" ), // , name Abc
- true ,
- true ));
-
- queryAll();
- }
mongoDB 는 공동 조회, 하위 조 회 를 지원 하지 않 습 니 다. 이것 은 우리 가 프로그램 에서 완성 해 야 합 니 다.검색 결 과 를 자바 검색 에 집합 하여 필요 한 필 터 를 하면 됩 니 다.
7. 기타 조작
- public void testOthers() {
- DBObject user = new BasicDBObject();
- user.put( "name" , "hoojo" );
- user.put( "age" , 24 );
-
- //JSON
- print( "serialize: " + JSON.serialize(user));
- //
- print( "parse: " + JSON.parse( "{ \"name\" : \"hoojo\" , \"age\" : 24}" ));
-
- print( " temp Collection : " + db.collectionExists( "temp" ));
-
- //
- if (!db.collectionExists( "temp" )) {
- DBObject options = new BasicDBObject();
- options.put( "size" , 20 );
- options.put( "capped" , 20 );
- options.put( "max" , 20 );
- print(db.createCollection( "account" , options));
- }
-
- // db
- db.setReadOnly( true );
-
- //
- db.getCollection( "test" ).save(user);
- }
자, 여기 에는 기본적으로 이렇게 많은 자바 가 MongoDB 를 조작 하 는 방법 을 소개 한다.다른 것 은 네가 많이 연구 해 야 한다.위 에서 MongoDB 를 조작 하 는 방법 은 모두 자주 사용 하 는 방법 으로 비교적 간단 하 다.
원본 링크:http://www.cnblogs.com/hoojo/archive/2011/06/02/2068665.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.