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

Najděte všechny dokumenty, které sdílejí max(hodnotu) nalezené v agregovaném kroku

Můžete to udělat seskupením na num_sold a poté pomocí $sort a $limit fáze potrubí, abyste získali pouze dokumenty s maximální hodnotou:

db.t.aggregate([
    // Group by num_sold, assembling an array of docs with each distinct value.
    {$group: {
        _id: '$num_sold',
        docs: {$push: '$$ROOT'}
    }},
    // Sort the groups by _id descending to put the max num_sold group first.
    {$sort: {_id: -1}},
    // Return just the first (max num_sold) group of docs.
    {$limit: 1}
])

Výstup:

{ 
    "_id" : 55.0, 
    "docs" : [
        {
            "_id" : ObjectId("5726a62879ce3350ff8d607e"), 
            "item" : "Orange", 
            "num_sold" : 55.0
        }, 
        {
            "_id" : ObjectId("5726a62879ce3350ff8d607f"), 
            "item" : "Peach", 
            "num_sold" : 55.0
        }
    ]
}



  1. Jak porovnat MongoDB s YCSB?

  2. Mangusta seskupte a počítejte

  3. Nelze vytvořit index v Azure DocumentDb s protokolem Mongodb

  4. java.lang.NoSuchMethodError:com.mongodb.MongoClient.<init>(Ljava/util/List;Lcom/mongodb/MongoCredential;Lcom/mongodb/MongoClientOptions;)V]