in product catalog there items one:
[     {         "title": "a great item",         "ltitle": "a great item",         "brand": {             "name": "mybrand"         },         "description": [             {                 "lang": "en-en",                 "full": "<p>super great item bla bla bla super great bla bla</p>",                 "short": "super great item..."             },             {                 "lang": "es-es",                 "full": "<p>producto de muy alta calidad bla bla bla alta calidad etc</p>",                 "short": "producto de muy..."             }         ]     },     ... ] i've been reading $elemmatch i'm not sure if that's i'm looking for.
i select whole item localized strings in description. 
i've tried no success:
db.items.find({description: { $elemmatch: { lang: "en-en" } } }) it returns whole item both languages in description. 
also i'm wondering happen items don't have selected language localization (should possible select default language).
also tried:
db.items.find({ "description.lang": "en-en"}, { _id:0, description: { $elemmatch: { lang: 'en-en' } } }) and:
db.items.aggregate([     { $match: { 'description.lang': 'en-en' } },     { $project: {         description: {             $filter: {                 input: '$description',                 as: 'desc',                 cond: { $eq: [ '$$desc.lang', 'en-en'] }             }         },         _id:0     } } ]) but both of them returns description, not other fields of items collection.
to extend question, know if it's possible select localized text in multiple fields:
[     {         "title": [             {                 "lang": "en-en",                 "title": "a great item"             },             {                 "lang": "es-es",                 "title": "un gran producto"             },         ],         "description": [                 {                     "lang": "en-en",                     "full": "<p>super great item bla bla bla super great bla bla</p>",                     "short": "super great item..."                 },                 {                     "lang": "es-es",                     "full": "<p>producto de muy alta calidad bla bla bla alta calidad etc</p>",                     "short": "producto de muy..."                 }         ]     } ] i select whole item texts in localized language.
is possible? if not, how resolved? (i'm thinking maybe in separating localized subdocuments , populating them after selecting, or maybe map-reduce function? i'm wondering how impact in performance).
i've been looking in different articles , confusing: seems there not consensus topic.
some of them opt separate collection translations (wich seems makes difficult maintain deleted texts), others selecting whole texts , filtering them (which seems bad option when there multiple languages: lot of post-processing), or sending them client (which seems inefficient send amount of unused data).
 
 
  
Comments
Post a Comment