문서 메뉴
문서 홈
/ / /
PHP 라이브러리 매뉴얼
/

데이터베이스 명령 실행

이 페이지의 내용

  • 개요
  • 단일 결과 문서를 반환하는 명령
  • 여러 결과를 생성하는 명령
  • 사용자 지정 읽기 설정 (read preference) 지정

MongoDB PHP 라이브러리는 Client, DatabaseCollection 클래스 전반에 걸쳐 일반적인 데이터베이스 명령 에 대한 헬퍼 메서드를 제공합니다. 또한 MongoDB\Database::command() 메서드를 사용하여 헬퍼 메서드가 없는 데이터베이스 명령을 실행할 수 있습니다.

메서드는 MongoDB\Database::command() 항상 MongoDB\Driver\Cursor 를 반환합니다. 이는 명령 커서를 통해 단일 결과 문서 와 여러 결과를 반환하는 명령 실행을 지원해야 하기 때문입니다.

대부분의 데이터베이스 명령은 단일 결과 문서를 반환하며, 이 문서는 반환된 커서를 배열로 변환하고 첫 번째 요소에 액세스하여 얻을 수 있습니다. 다음 예제에서는 ping 명령을 실행하고 결과 문서를 출력합니다.

<?php
$database = (new MongoDB\Client)->test;
$cursor = $database->command(['ping' => 1]);
var_dump($cursor->toArray()[0]);

출력은 다음과 유사합니다:

object(MongoDB\Model\BSONDocument)#11 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["ok"]=>
float(1)
}
}

일부 데이터베이스 명령은 여러 결과가 포함된 커서를 반환합니다. 다음 예제에서는 listCollections 를 실행하여 test 데이터베이스의 각 컬렉션에 대한 결과 문서가 포함된 커서를 반환하고 foreach 루프를 사용하여 결과를 반복합니다. 이 예제는 예시입니다. 애플리케이션은 일반적으로 실제로 MongoDB\Database::listCollections() 를 사용합니다.

<?php
$database = (new MongoDB\Client)->test;
$cursor = $database->command(['listCollections' => 1]);
foreach ($cursor as $collection) {
echo $collection['name'], "\n";
}

출력은 다음과 비슷할 수 있습니다.

persons
posts
zips

참고

프로토콜 수준에서 커서를 통해 여러 결과를 생성하는 명령은 커서 구성에 필요한 필수 요소(예:커서의 ID, 네임스페이스 및 첫 번째 결과 배치(선택 사항))가 포함된 단일 결과 문서를 반환합니다. MongoDB\Driver\Manager::executeCommand() 확장 프로그램의 메서드가 이러한 응답을 감지하면 반복 가능한 명령 커서를 생성하고 원시 결과 문서 대신 반환합니다. 필요한 경우 명령 모니터링 을 사용하여 원시 결과 문서를 계속 관찰할 수 있습니다. .

createUser 와 같은 쓰기 명령은 쓰기 가능한 서버(예: 프라이머리 복제본 세트 멤버)에서만 실행할 수 있습니다. MongoDB\Database::drop() 와 같은 MongoDB PHP 라이브러리의 명령 헬퍼 메서드는 필요한 경우 자체 읽기 설정 을 적용할 수 있습니다. 그러나 MongoDB\Database::command() 메서드는 일반적인 메서드이며 기본값은 해당 메서드가 호출된 데이터베이스 객체의 읽기 설정을 따릅니다. 필요한 경우 readPreference 옵션을 사용하여 기본 읽기 설정을 재정의할 수 있습니다.

다음 예시에서는 cluster에 연결하고 secondaryPreferred 을 클라이언트의 기본 읽기 설정 (read preference)으로 지정합니다. 그런 다음 test 데이터베이스에서 createUser 명령을 실행할 때 primary 읽기 설정 (read preference)을 지정합니다.

<?php
$client = new MongoDB\Client(
'mongodb+srv://cluster0.example.com',
['readPreference' => 'secondaryPreferred']
);
$client->test;
$cursor = $db->command(
[
'createUser' => 'username',
'pwd' => 'password',
'roles' => ['readWrite'],
],
[
'readPreference' => new MongoDB\Driver\ReadPreference('primary'),
]
);
var_dump($cursor->toArray()[0]);

이 경우 출력은 다음과 유사합니다:

object(MongoDB\Model\BSONDocument)#8 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["ok"]=>
float(1)
}
}

돌아가기

데이터 정렬

다음

사용자 지정 데이터 유형