MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Letzten Datensatz aus Filialdokument in Mongodb zurückgeben

Abfragen in MongoDB geben keine Filialdokumente (oder, wie in Ihrem Fall, Filialdokumente von Filialdokumenten) zurück. Sie gleichen die Dokumente in der Sammlung ab und geben sie zurück. Die Form der Dokumente kann durch Projektion ein wenig verändert werden, aber es ist begrenzt. Wenn Sie häufig das neueste Tag finden möchten, möchten Sie wahrscheinlich, dass Ihre Dokumente Tags darstellen. Ein Array in einem Array zu haben ist im Allgemeinen auch in MongoDB eine schlechte Idee.

Wenn dies ein ungewöhnlicher Vorgang ist, der nicht besonders schnell sein muss, können Sie eine Aggregation verwenden:

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