sql >> Databáze >  >> NoSQL >> MongoDB

třídit mongo kolekci na základě skóre podřízených dokumentů

Můžete zkusit níže agregaci.

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. alternativa k použití 'wait' s lazy_static! makro v rzi?

  2. Nadřazený objekt cesty JSON nebo ekvivalentní dotaz MongoDB

  3. Chyba při načítání sdílených knihoven, nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář (hiredis)

  4. Může být pole seznamu shard klíč v MongoDB?