sql >> Database >  >> NoSQL >> MongoDB

sorteer mongo-verzameling op basis van de score van onderliggende documenten

Je kunt onderstaande aggregatie proberen.

db.editors.aggregate([
  {"$lookup":{
    "from":"books",
    "localField":"_id",
    "foreignField":"parentId",
    "as":"books"
  }},
  {"$unwind":"$books"},
  {"$match":{"books.type":"sci-fi"}},
  {"$group":{
    "_id":"$_id",
    "name":{"$first":"$name"},
    "scores":{"$sum":"$books.score"}
  }},
  {"$sort":{"scores":-1}},
  {"$limit":10}
])
db.editors.aggregate([
  {"$lookup":{
    "from":"books",
    "localField":"_id",
    "foreignField":"parentId",
    "as":"books"
  }},
  {"$project":{
    "name":1,
    "scores":{"$sum":"$books.score"}
  }},
  {"$sort":{"scores":-1}}
])


  1. Hoe verbinding te maken met mongoDB Atlas met behulp van mangoest

  2. Hoe indexering de prestaties van zoekopdrachten in mongodb verbetert

  3. Query uitvoeren op matrix van geneste documenten voor hoogste waarde van veld

  4. Laravel - Taken in volgorde uitvoeren