Stable API
API 버전 선언
API 버전을 선언하려면 클라이언트를 생성할 때 serverApi
드라이버 옵션을 전달합니다. 값은 MongoDB\Driver\ServerApi 입니다. API 버전 정보가 포함된 인스턴스입니다. 이 기능은 MongoDB 5 에 도입되었습니다.0, 처음에는 API 버전 '1'만 지원합니다. 추가 버전은 향후 버전의 서버에 도입될 수 있습니다.
use MongoDB\Client; use MongoDB\Driver\ServerApi; $serverApi = new ServerApi(ServerApi::V1); $client = new Client('mongodb://127.0.0.1', [], ['serverApi' => $serverApi]); // Command includes the declared API version $client->database->collection->find([]);
참고
5.0 이전 버전이 없는 배포에 연결할 때만 API 버전을 선언합니다. 표시합니다. 이전 서버에서는 선언된 API 버전으로 명령이 발생하면 오류가 발생합니다.
엄격한 API
기본적으로 API 버전을 선언하면 stable API 에 포함된 명령의 동작이 보장되지만, API 버전에 포함되지 않은 명령의 사용이 금지되지는 않습니다. 의 일부인 명령과 옵션만 stable API 허용하려면 strict
MongoDB\Driver\ServerApi 를 만들 때 옵션을 지정합니다. 인스턴스:
use MongoDB\Client; use MongoDB\Driver\ServerApi; $serverApi = new ServerApi(ServerApi::V1, true); $client = new Client('mongodb://127.0.0.1', [], ['serverApi' => $serverApi]); // Will fail as the tailable option is not supported in versioned API $client->database->collection->find([], ['tailable' => true]);
더 이상 사용되지 않는 명령 실패
선택적 deprecationErrors
옵션을 사용하면 MongoDB가 API 버전에서 더 이상 사용되지 않는 모든 명령이나 동작이 실패합니다. 이는 향후 API 버전으로 원활하게 전환하기 위해 테스트에 사용할 수 있습니다.
use MongoDB\Client; use MongoDB\Driver\ServerApi; $serverApi = new ServerApi(ServerApi::V1, null, true); $client = new Client('mongodb://127.0.0.1', [], ['serverApi' => $serverApi]);
참고
이 작성 시점을 기준으로 API 버전 '1'의 어떤 부분도 더 이상 사용되지 않습니다.
명령 헬퍼와 함께 사용
MongoDB\Database::command()
메서드를 사용하여 임의의 명령을 실행하는 경우 클라이언트에 선언된 API 버전이 명령 문서에 자동으로 추가됩니다. 명령 문서에서 apiVersion
, apiStrict
또는 apiDeprecationErrors
명령 옵션 중 하나를 설정하고 선언된 API 버전으로 클라이언트에서 MongoDB\Database::command()
를 호출하는 것은 지원되지 않으며, 이는 정의되지 않은 동작을 초래할 수 있습니다.