Me gustaría saber si existe una convención para las colecciones de bases de datos como:
PageVisit
o page_visit
.
¿Existen ventajas / desventajas para estas notaciones?
mongodb
naming-conventions
nascar
fuente
fuente
Respuestas:
Las convenciones generales son:
Ejemplos:
Las convenciones de nombres de campo (deberían) seguir algo de la misma lógica, aunque el uso de mayúsculas y minúsculas es bastante común.
fuente
Simplemente evite usar guiones en los nombres de sus colecciones.
Y eso es solo porque, si usa el cli de las dos llamadas siguientes, la primera es JavaScript no válido:
db.foo-bar.find(); db['foo-bar'].find();
Ambos son funcionalmente idénticos, pero el segundo es un poco más molesto de escribir y no se completa con la pestaña.
Aparte de eso, las ventajas / desventajas dependen del uso que haga de las colecciones. Ser coherente es más importante que la convención que elija.
fuente
:
válidos para nombres de colecciones de espacios de nombres, como enfoo:bar
?db["\n"].insert({});
, sin error. Las cosas a considerar son principalmente la conveniencia con el controlador que está utilizando.En http://docs.mongodb.org/manual/reference/limits/ , el manual establece que los nombres de las colecciones deben comenzar con un guión bajo ('_') o un carácter de letra, y no pueden:
Sin embargo, si sigue la regla y crea una colección con '_' como letra inicial, como "_TWII", encontrará problemas cuando quiera eliminar la colección. Vea la prueba a continuación y la forma de solucionarlo. La colección '_TWII' fue creada bajo la base de datos de 'personas'.
> show collections _TWII employees system.indexes > db._TWII.drop() 2015-02-19T16:34:56.738-0800 TypeError: Cannot call method 'drop' of undefined > use admin switched to db admin > db.runCommand({renameCollection:"people._TWII",to:"people.TWII"}) { "ok" : 1 } > use people switched to db people > show collections TWII employees system.indexes > db.TWII.drop() true > show collections employees system.indexes >
Un atajo para eliminar la colección _TWII mientras se encuentra en la base de datos de 'personas':
> db.createCollection('^TWII') { "ok" : 1 } > db.getCollection('^TWII').drop() true
fuente
MongoDB tiene algunas convenciones de nomenclatura. Uno de ellos es que el nombre de la base de datos no distingue entre mayúsculas y minúsculas. Además, mongo pondrá en plural el nombre de su colección si no se especifica. "curso" se convertirá en "cursos".
Por ellos, intente nombrar toda su colección en minúsculas y sin caracteres especiales. Evitará muchos errores, especialmente si usa Mongoose. Mongoose tiene algunas peculiaridades de consulta extrañas.
Por ejemplo, si tiene una colección llamada "cursos", así es como debe estructurar su modelo:
const LawModel = mongoose.model( "course", new mongoose.Schema({ id: String, name: String, }),
¿Observa cómo "curso" es singular? Mongoose lo pondrá en plural, por lo que es posible que vea una matriz vacía "[]". -> está consultando una colección inexistente.
Intente cambiar el nombre y ajustar su modelo.
fuente