정의
버전 8.3에 추가 되었습니다.
새 임의의 ObjectId() 값을 생성합니다.
$createObjectId 집계 파이프라인 또는 표현식 기반 업데이트 에서 고유한 ObjectId 값을 생성하려면 를 사용합니다.
예시 들어, 새 식별자 필드를 생성하거나 기존 id 값을 대체하여 다른 단계에서 문서를 구분할 수 있도록 할 수 있습니다. 여기에는 _id $graphLookup 와 같이안정적인 값에 의존하는 연산자가 포함됩니다.
구문
$createObjectId 의 구문은 다음과 같습니다:
{ $createObjectId: { } }
참고
빈 객체 ({})를 인수로 사용해야 합니다.
행동
$createObjectId 다음과 같이 동작합니다.
Argument | 행동 |
|---|---|
| BSON type 의 새 임의 값을 |
기타 값 | 작업이 |
팁
기존 값을 ObjectId로 변환하려면 를 $toObjectId 사용합니다.
예시
이 페이지의 예시에서는 sample_mflix 샘플 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예시를 실행 하려면 데이터베이스를 제거하고 다시 만들어야 할 수 있습니다.
뷰에서 식별자 생성
이 예시 다른 집계 단계에서 안정적인 _id 값을 사용할 수 있도록 뷰에 ObjectId 값을 추가합니다.
sample_mflix 데이터베이스 에서 원래 _id 필드 숨기는 movies 컬렉션 에 대한 뷰를 만듭니다.
db.createView( "moviesView", "movies", [ { $project: { _id: 0, title: 1, cast: 1 } } ] )
에 의존하는 단계는 문서에 더 이상 필드 없기 때문에 이 보기에서 예상대로 작동하지 _id _id 않습니다. 예시 를 들어 와 같은 그래프 순회 단계에서는 $graphLookup _id 내부적으로 를 사용하여 방문한 문서를 추적 하고 중복된 결과를 제거합니다.
안정적인 식별자가 필요한 단계에서 이 뷰를 사용하려면 로 고유한 _id 필드 추가하는 두 번째 $createObjectId 뷰를 만듭니다.
db.createView( "moviesViewWithId", "moviesView", [ { $project: { _id: { $createObjectId: {} }, // unique id title: 1, cast: 1 } } ] )
이제 의 각 문서 별개의 노드 로 취급하는 집계 실행 수 moviesViewWithId 있습니다. 예시 를 들어, 다음 단계는 각 영화에 출연진을 주식 다른 영화를 $graphLookup 찾습니다.
db.movies.aggregate( [ { $graphLookup: { from: "moviesViewWithId", startWith: "$cast", connectFromField: "cast", connectToField: "cast", as: "relatedMovies" } } ] )
이 파이프라인 에서 는 뷰의 각 문서 에서 고유한 ObjectId 값을$createObjectId 갖도록 _id 합니다. 그러면 안정적인 식별자에 의존하는 단계에서 문서를 올바르게 구분할 수 있습니다.