Si tenemos una colección de libros, podemos asignar etiquetas de autores en una matriz de la siguiente manera:
colección de libros
{ ..., "authors" : ["John Michaels", "Bill Williams"] }Esto puede causar problemas si cambia el nombre de un autor .
En cambio, estaba pensando en asignar un valor entero a cada autor y crear una colección de 'etiquetas':
Colección de etiquetas
{ “tags” : [ {“John Michaels” : 0}, {“Jane Collins” : 1}, {“Bill Williams” : 2} ] }Aquí está mi colección de libros , aquí especificamos que 'John Michaels' y 'Bill Williams' son los autores:
{ …, “authors” : [0, 2] }Si alguna vez necesitara cambiar el nombre del autor 'Bill Williams' a 'Bill H. Williams', no habría problema porque el valor almacenado en la colección de libros permanece sin cambios.
Mi pregunta es si MongoDB tiene algo como enumeraciones que incrementarán automáticamente el valor integral o si hay algo más integrado en MongoDB para ayudar con este tipo de situación.
Gracias
Este es un caso de uso típico de hacer referencia a otras colecciones. Entonces, deberías tener 2 colecciones:
Colección de autores:
{ _id: ObjectId, name: String, ... // Other fields }Colección de libros:
{ _id: ObjectId, authors: [ ObjectId ], // References to documents from Author collection ... // Other fields } Entonces, en la propiedad de los authors de la colección Books , almacena los valores _id de todos los autores. Luego, cuando obtenga el documento del libro , puede obtener fácilmente los datos actualizados de los authors de la colección de Autores .