2012-09-11 13 views
8

나는 mongodb에 초보자입니다.몽고드 삽입 _id 필드없이 문서 삽입

  1. _id 필드가 자동으로 생성되지 않은 문서를 삽입해야합니다.

  2. 필자는 Tenant_id 필드를 고유하거나 "_id"필드를 Tenant_id로 변경해야합니다.

어떻게 수행하나요? 이

 Tenant 
     {Tenant_id: 123, Tenant_info: ...} 

답변

22

는 모든 일반 컬렉션을 자동으로 _id 필드를 삽입 : 문서를 삽입 할 때 그래서 당신은 수동으로 _id를 설정할 수 있습니다.

그러나이 동작은 명시 적으로 autoIndexId 매개 변수를 false로 설정하여 컬렉션을 만들 때 변경할 수 있습니다.

> db.createCollection("noautoid", { autoIndexId: false }) 
{ "ok" : 1 } 

그런 다음 _id 필드없이 문서를 삽입 할 수 있습니다. 그러나 일부 드라이버 (예 : 몽고 콘솔)는 자체적으로 _id 필드를 추가합니다. 몽고 콘솔에서이 작업을 수행 할 수 있습니다 autoIndexId 필드에 대한

> db.noautoid._mongo.insert(db.noautoid._fullName, {name: "Jack"}) 
> db.noautoid.find() 
{ "name" : "Jack" } 

자세한 정보는 MongoDB documentation에서 찾을 수 있습니다. 이 페이지는 Capped Collections에 관한 것이지만 autoIndexId 필드는 일반 및 출전 된 콜렉션 모두에 공통입니다.

+0

이 작동하지 않습니다 ... –

+2

더 이상 허용되지 않습니다. _id 필드는 복제에 필요하므로 항상 존재해야합니다. –

3

_id 필드와 같은

뭔가 당신이 덮인 컬렉션을 사용하지 않는 한 몽고 문서의 기본 키입니다.

문서 구조 밖으로 생략 할 수없는 필드입니다.

대신 tennant_id_id으로 사용하는 것이 좋습니다.

2

모든 MongoDB 문서에는 고유 한 필드 "_id"가 있어야하며 제공하지 않으면 자동으로 생성됩니다.

이 필드의 이름을 바꿀 수 없습니다.

여러분이 선택 사항은 다음과 같습니다

1) (당신이 _id에) 해당 필드에 고유 인덱스를 추가 또는 2) 저장 tenant_id 값이 필요합니다 생성 된 _id 필드를 무시하고 자신의 tenant_id 필드를 사용하여 필드 (이미 고유 인덱스가 있다는 사실을 이용하십시오).

3

Mongodb는 문서를 삽입 할 때 '_id'필드에 값을 지정하지 않은 경우에만 '_id'필드를 자동으로 생성합니다. 가 존재하지 않는 경우 기본적으로

db.tenants.insert({"_id" : 123, "Tenant_info" : ... }) 
1

mongodb 콜렉션에서 _id 필드를 제거 할 수있는 방법이 없습니다. @stephene가 말했듯이, 나는 똑같이 시도했지만 이런 오류가 발생했습니다

> db.noautoid._mongo.insert(db.noautoid._fullName, {name: "Jack"}); 
2015-06-18T11:22:29.149+0530 E QUERY Error: insert needs 3 args 
at (shell):1:20