2011-11-30 5 views
0

J'ai quelques milliers de chaînes (items) que j'aimerais traduire. J'ai structuré mon MongoDB comme suit:Conception de la base de données MongoDB avec documents incorporés

@document = {:item => "hello", :translations => {:fr => {:name => "bonjour", 
:note => "easy"}, :es => {:name => "hola", :note => "facil"}}} 

Le champ: translations peut contenir beaucoup plus de langues et de propriétés. Je voudrais lancer des requêtes telles que la récupération de tous les éléments sans traduction pour une langue spécifique, ou la récupération de tous les éléments ayant 'bonjour' comme traduction française.

Je ne vois pas comment je peux faire ça. Y a-t-il une meilleure façon de structurer ma base de données à ces fins? J'utilise node.js.

Merci.

Répondre

2

Je voudrais exécuter des requêtes telles que la récupération tous les éléments avec aucune traduction pour une langue spécifique,

.find({ 'translations.fr': {$exists:false} }) 

... ou de récupérer tous les éléments ayant 'bonjour' comme traduction française.

.find({ 'translations.fr.name': "bonjour" }) 

Y at-il une meilleure façon de structurer ma base de données à ces fins?

Je crois que vous avez la bonne structure. Vous devrez vous familiariser avec le Dot Notation.

0

Je dirais que pour votre usage, le modèle est bon. Vous avez besoin mongo dot notation, vous pouvez utiliser $exists pour rechercher fr et la notation par points pour Bonjour -

find({ "fr.name" : "bonjour" }) 
Questions connexes