MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Renvoie le dernier enregistrement du sous-document dans Mongodb

Les requêtes dans MongoDB ne renvoient pas de sous-documents (ou, comme dans votre cas, des sous-documents de sous-documents). Ils correspondent et renvoient les documents de la collection. La forme des documents peut être un peu modifiée par projection, mais c'est limité. Si vous souhaitez rechercher la dernière balise de manière courante, vous souhaiterez probablement que vos documents représentent des balises. Avoir un tableau dans un tableau est généralement une mauvaise idée aussi dans MongoDB.

S'il s'agit d'une opération peu courante et qui n'a pas besoin d'être particulièrement rapide, vous pouvez utiliser une agrégation :

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" } } }
])