2012-09-11 32 views
8

No tengo información sobre mongodb.Mongodb insertar documento sin el campo _id

  1. Necesito insertar un documento sin que el campo _id se genere automáticamente.

  2. Necesito establecer el campo Tenant_id como único o necesito cambiar el campo "_id" por Tenant_id.

cómo hacerlo?

algo como esto

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

Respuesta

22

Por defecto, todas las colecciones regulares insertar automáticamente un campo _id si está ausente.

Sin embargo, este comportamiento se puede cambiar cuando crea la colección, estableciendo explícitamente el parámetro autoIndexId en falso.

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

Luego puede insertar documentos sin el campo _id. Pero algunos controladores, como el javascript uno (y por lo tanto, la consola mongo), agregan el campo _id por sí mismos. En la consola mongo, usted puede hacer esto:

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

Más información acerca del campo autoIndexId se puede encontrar en el MongoDB documentation. Esta página trata acerca de las Colecciones limitadas, pero el campo autoIndexId es común tanto para las colecciones normales como para las limitadas.

+0

no su trabajo ... –

+2

Ya no está permitido - se requiere el campo _id para la replicación y, por lo tanto, siempre debe existir. –

3

_id El campo es la clave por defecto para un documento mongo menos que esté utilizando colecciones tapados.

Es un campo irrevocable que no se puede dejar fuera de una estructura de documento.

Recomendaría usar tennant_id como _id en su lugar.

2

Cada documento de MongoDB debe tener un campo único "_id" y si no lo proporciona, se generará automáticamente para usted.

No se puede cambiar el nombre de este campo.

Sus dos opciones son:

1) ignoran el campo _id generado y utilizar su propio campo tenant_id (que tendrá que añadir un índice único en ese campo) o valor tenant_id 2) tienda en _ID campo (y aproveche el hecho de que ya tiene un índice único).

3

Mongodb generará automáticamente el campo '_id' solo si no especifica un valor para el campo '_id' cuando inserta un documento. Por lo que sólo puede configurar manualmente _ID al insertar el documento:

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

No hay forma de eliminar el campo _id en ninguna colección de mongodb. Como , @stephene Dicho esto, he intentado lo mismo, pero iam conseguir error como este

> 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 
Cuestiones relacionadas