MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Retornar o registro mais recente do subdocumento no Mongodb


As consultas no MongoDB não retornam subdocumentos (ou, como no seu caso, subdocumentos de subdocumentos). Eles correspondem e retornam os documentos da coleção. A forma dos documentos pode ser um pouco alterada pela projeção, mas é limitada. Se você deseja encontrar a tag mais recente com frequência, provavelmente deseja fazer com que seus documentos representem tags. Ter um array em um array geralmente é uma má ideia no MongoDB também.

Se esta for uma operação incomum e que não precisa ser particularmente rápida, você pode usar uma agregação:
db.modules.aggregate([
    { "$unwind" : "$svn_branches" },
    { "$unwind" : "$svn_branches.tags" },
    { "$sort" : { "svn_branches.tags.updated_at" : -1 } },
    { "$group" : { "_id" : "$_id", "latest_tag" : { "$first" : "$svn_branches.tags" } } }
])