2012-03-18 16 views

risposta

35

È possibile utilizzare qualsiasi carattere (UTF8) nel nome del campo che non sono speciali (contiene "", o inizia con '$').

https://jira.mongodb.org/browse/SERVER-3229

https://stackoverflow.com/a/7976235/311220

E 'generalmente meglio attaccare con caratteri alfanumerici minuscoli con caratteri di sottolineatura però.

+1

E riguardo le specifiche del prodotto? Non semplificerebbe notevolmente la progettazione se i nomi dei campi fossero la descrizione della specifica effettiva? (ad esempio ''Dimensioni schermo': '26 pollici'') – Dor

+3

Non necessariamente, @Dor - vuoi avere un po 'di flessibilità tra l'interfaccia utente e il tuo database (niente di così volubile come un cliente:" Aspetta, lo voglio pronunciare "Dimensioni schermo", non "Dimensione schermo" "). E, naturalmente, c'è tutta la parte dell'internazionalizzazione del puzzle, che richiede anche il disaccoppiamento. A proposito, quando Acorn dice "qualsiasi UTF8", che include gli spazi, quindi stai perfettamente bene lì, se vuoi. –

+0

Come gestirà le parole di cammello come 'userDetails'? È valido? –

1

Qualcos'altro da tenere in considerazione è il fatto che è possibile creare un nome di proprietà chiamato "query", ma poi utilizzare gli operatori di query su di esso, rendendo difficile eseguire un numero elevato di query.

Esempio:

documento Inserire con una proprietà denominata

db.coll.insert({ query: 'foo' }); 

interrogazione uguaglianza funziona:

db.coll.findOne({ query: 'foo' });  

Non uguale ($ ne) non lo fa:

db.coll.findOne({ query: { $ne: 'bar' } }); 
+0

Buon punto. Ma puoi ancora fare quella query come 'db.coll.findOne ({query: {query: {$ ne: 'bar'}}})'. Quindi non è impossibile, ma è imbarazzante. – JohnnyHK

+0

Grazie, non mi sono reso conto che non era impossibile fino a dopo aver postato questo. Decisamente più imbarazzante. – Dave

+1

A partire da 3.2 (rilasciato alla fine del 2015) questo problema è stato risolto. –

Problemi correlati