몽고DB 튜토리얼login
몽고DB 튜토리얼
작가:php.cn  업데이트 시간:2022-04-21 17:49:03

몽고DB 연결


이 튜토리얼에서는 MongoDB의 다양한 연결 방법에 대해 설명합니다.


MongoDB 서비스 시작

이전 튜토리얼에서MongoDB 서비스를 시작하는 방법에 대해 설명했습니다. MongoDB 설치 디렉토리에서 'mongod'를 실행하세요.

mongodb는 시작 작업을 실행한 후 필요한 일부 정보를 출력한 후 아무런 정보도 출력하지 않고 연결이 설정될 때까지 기다립니다. 연결이 설정되면 로그 정보가 인쇄되기 시작합니다.

MongoDB 쉘을 사용하여 MongoDB 서버에 연결할 수 있습니다. PHP를 사용하여 MongoDB에 연결할 수도 있습니다. 이 튜토리얼에서는 MongoDB 쉘을 사용하여 MongoDB 서비스에 연결합니다. 다음 장에서는 PHP를 통해 MongoDB 서비스에 연결하는 방법을 소개합니다.



쉘을 통해 MongoDB 서비스에 접속합니다.

다음 명령어를 실행하면 MongoDB 서비스에 접속할 수 있습니다.

참고: localhost는 호스트 이름이며 이 옵션은 필수입니다.

mongodb://localhost

위 명령어를 실행하면 다음과 같은 출력을 볼 수 있다.

$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
> mongodb://localhostmongodb://localhost
...

이때 ./mongod 명령어를 실행한 창으로 돌아가서 어디로 접속해야 하는지 알 수 있다. MongoDB 서버를 사용하면 다음 정보를 볼 수 있습니다.

……省略信息……
2015-09-25T17:22:27.336+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2015-09-25T17:22:27.336+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "/data/db" } }
2015-09-25T17:22:27.350+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
2015-09-25T17:22:36.012+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37310 #1 (1 connection now open)  # 该行表明一个来自本机的连接

……省略信息……


MongoDB 연결 명령 형식

사용자 이름과 비밀번호를 사용하여 MongoDB 서버에 연결해야 합니다. username:password @hostname/dbname' 형식, 'username'은 사용자 이름, 'password'는 비밀번호입니다.

사용자 이름과 비밀번호를 사용하여 기본 데이터베이스에 연결합니다:

$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
mongodb://admin:123456@localhost/

위 명령에서 사용자 admin은 비밀번호 123456을 사용하여 로컬 MongoDB 서비스에 연결합니다. 출력 결과는 다음과 같습니다. <, p>

> mongodb://admin:123456@localhost/
...

사용자 이름과 비밀번호를 사용하여 지정된 데이터베이스에 연결하고 로그인합니다.

지정된 데이터베이스에 연결하는 형식은 다음과 같습니다. 다음:

mongodb://admin:123456@localhost/test


추가 연결 예

로컬에 연결 데이터베이스 서버의 경우 포트가 기본값입니다.

mongodb://localhost

사용자 이름 fred와 비밀번호 foobar를 사용하여 localhost의 관리 데이터베이스에 로그인합니다.

mongodb://fred:foobar@localhost

사용자 이름 fred와 비밀번호 foobar를 사용하여 localhost의 baz 데이터베이스에 로그인합니다.

mongodb://fred:foobar@localhost/baz

Replica 쌍을 연결합니다. 서버 1은 example1.com 서버 2는 example2입니다.

mongodb://example1.com:27017,example2.com:27017

복제본 세트를 세 개의 서버(포트 27017, 27018 및 27019)에 연결합니다.

mongodb://localhost,localhost:27018,localhost:27019

Replica set을 3개의 서버에 연결하면 마스터 서버에 쓰기 작업이 적용되고 쿼리는 다음과 같습니다. 슬레이브 서버에 배포됩니다.

mongodb://host1,host2,host3/?slaveOk=true

복제 세트의 일부인지, 마스터 서버인지, 슬레이브 서버인지에 관계없이 첫 번째 서버에 직접 연결합니다.

mongodb://host1,host2,host3/?connect=direct;slaveOk=true

연결 서버에 우선 순위가 있는 경우 모든 서버도 나열해야 합니다. , 위의 연결 방법을 사용할 수 있습니다.

안전 모드에서 로컬 호스트에 연결:

mongodb://localhost/?safe=true

안전 모드에서 복제본 세트에 연결하고 기다립니다. 두 개 이상의 복제 서버가 성공적으로 쓰기를 수행했으며 시간 초과가 2초로 설정되었습니다.

mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000


매개변수 옵션 설명

표준 형식:

mongodb://[사용자 이름:password@]host1[:port1][,host2[:port2],...[,hostN[:portN] ]][/[database][?options]]

표준 연결 형식에는 아래와 같이 여러 옵션(옵션)이 포함되어 있습니다.

< tbody> < tr>
옵션설명
replicaSet=name복제본 세트 이름을 확인하세요. Impliesconnect=replicaSet.
slaveOk=true|false
  • 选项描述
    replicaSet=name验证replica set的名称。 Impliesconnect=replicaSet.
    slaveOk=true|false
    • true:在connect=direct模式下,驱动会连接第一台机器,即使这台服务器不是主。在connect=replicaSet模式下,驱动会发送所有的写请求到主并且把读取操作分布在其他从服务器。

    • false: 在 connect=direct模式下,驱动会自动找寻主服务器. 在connect=replicaSet 模式下,驱动仅仅连接主服务器,并且所有的读写命令都连接到主服务器。

    safe=true|false
      • true: 在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考 wtimeoutMS).

    false: 在每次更新之后,驱动不会发送getLastError来确保更新成功。
    w=n驱动添加 { w : n } 到getLastError命令. 应用于safe=true。
    wtimeoutMS=ms驱动添加 { wtimeout : ms } 到 getlasterror 命令. 应用于 safe=true.
    fsync=true|false
    • true: 驱动添加 { fsync : true } 到 getlasterror 命令.应用于 safe=true.

    • false: 驱动不会添加到getLastError命令中。

    journal=true|false如果设置为 true, 同步到 journal (在提交到数据库前写入到实体中). 应用于 safe=true
    connectTimeoutMS=ms可以打开连接的时间。
    socketTimeoutMS=ms发送和接受sockets的时间。
    true: connect=direct 모드에서는 이 서버가 마스터가 아니더라도 드라이버는 첫 번째 시스템에 연결됩니다. connect=replicaSet 모드에서 드라이버는 모든 쓰기 요청을 마스터에 보내고 읽기 작업을 다른 슬레이브 서버에 배포합니다.
  • false: connect=direct 모드에서는 드라이버가 자동으로 기본 서버를 찾습니다. connect=replicaSet 모드에서는 드라이버가 기본 서버에만 연결하고 모든 읽기 및 쓰기를 수행합니다. 명령은 메인 서버에 연결됩니다. <🎜>
safe=true|false
    < ul style="list-style-type: square;" class=" list-paddingleft-2">
  • <🎜>true: 업데이트 작업을 수행한 후 드라이버는 업데이트가 완료되었는지 확인하기 위해 getLastError 명령을 보냅니다. 성공적인. (wtimeoutMS도 참조하세요).<🎜>
false: 각 업데이트 후에 드라이버는 업데이트 성공을 확인하기 위해 getLastError를 보내지 않습니다.
w=n드라이버는 getLastError 명령에 { w : n }을 추가합니다. safe=true에 적용됩니다.
wtimeoutMS=ms드라이버는 getlasterror 명령에 { wtimeout : ms }를 추가합니다. safe=true에 적용됩니다.
fsync=true|false
  • <🎜>true: 드라이버가 getlasterror에 { fsync : true }를 추가합니다. safe=true에 적용합니다.<🎜>
  • <🎜>false: 드라이버가 getLastError 명령에 추가되지 않습니다. <🎜>
journal=true|falsetrue로 설정하면 저널에 동기화합니다(데이터베이스에 제출하기 전). 이전 엔터티에 기록됨) safe=true에 적용됩니다.
connectTimeoutMS=ms연결을 열 수 있는 시간입니다.
socketTimeoutMS=ms소켓을 보내고 받는 시간입니다.
<🎜><🎜>