2011-01-12 10 views
8

Acabo de descubrir un comportamiento extraño exhibido por MongoDB."sistema". En un nombre de colección en MongoDB

Aparentemente, cualquier nombre de colección con la cadena "system". en cualquier lugar no funcionará correctamente.

Para empeorar las cosas, ¡ni siquiera te dirá que algo está mal!

Es realmente más una cuestión de curiosidad, pero ¿alguien tiene alguna idea de por qué sucedería esto? Está documentado en alguna parte?

Mi suposición es que utiliza "" sistema. *" Colecciones para almacenar cosas internamente (como índices) y no quiere que jugar con ellos, pero esto no parece ser el comportamiento correcto para mí.

Respuesta

12

estás en lo correcto "del sistema. *" es un espacio de nombres de recogida reservada utilizada por MongoDB en cada base de datos.

se utiliza para almacenar los índices y de los usuarios, etc.

SQL Server tiene muchas de estas tablas también, y no creo que te adviertan que tampoco los uses :)

Pero siempre se puede poner en una solicitud para dicha funcionalidad: http://jira.mongodb.org/

se puede ver mediante la ejecución ...

> show collections

y verá algo como ...

system.indexes

system.users

Por lo tanto, se puede ver sus índices por ejemplo:

> db.system.indexes.find()

De los documentos MongoDB:.

El de.system * espacios de nombres en MongoDB son especiales y contienen la base de datos información del sistema. Sistema colecciones incluyen:

  • system.namespaces enumera todos los espacios de nombres.
  • system.indexes enumera todos los índices.
  • Existen metadatos adicionales de espacio de nombres/índice en los archivos database.ns , y son opacos.
  • system.profile almacena la información del perfil de la base de datos.
  • system.users enumera los usuarios que pueden acceder a la base de datos.
  • local.sources almacena los datos y el estado de la configuración del esclavo de réplica.
  • La información sobre la estructura de un objeto almacenado se almacena dentro del objeto . Ver BSON.

Hay varias restricciones a manipulación de objetos en el sistema colecciones. Insertar en system.indexes agrega un índice, pero , de lo contrario, esa tabla es inmutable (el comando de índice especial lo actualiza para usted). system.users es modificable. system.profile es droppable.

http://docs.mongodb.org/manual/reference/system-collections/

+0

¿Es posible obtener los registros de cada colecciones como si tengo user.primary y user.secondary en que las colecciones puedo seleccionar el usuario por su nombre tanto de la colección en una sola vez? – jackyesind

Cuestiones relacionadas