MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Restituisce l'ultimo record dal documento secondario in Mongodb

Le query in MongoDB non restituiscono documenti secondari (o, come nel tuo caso, documenti secondari di documenti secondari). Abbinano e restituiscono i documenti della collezione. La forma dei documenti può essere leggermente modificata dalla proiezione, ma è limitata. Se vuoi trovare comunemente l'ultimo tag, probabilmente vorrai fare in modo che i tuoi documenti rappresentino i tag. Avere un array in un array è generalmente una cattiva idea anche in MongoDB.

Se si tratta di un'operazione non comune e che non deve essere particolarmente veloce, puoi utilizzare un'aggregazione:

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