Mongodb: Ten horní dokumentů

0

Otázka

Nejsem schopen najít odpověď na problém buď na Google nebo TAK.

Mám sbírku, jako jsou :

{ "_id" : "0", "timestamp" : 160000 }
{ "_id" : "00", "timestamp" : 160000 }
{ "_id" : "000", "timestamp" : 150000 }

A chci se dostat na vrchol řádků na základě timestampnejen top.

To například:

{ "_id" : "0", "timestamp" : 160000 }
{ "_id" : "00", "timestamp" : 160000 }

Zřejmé, řešením by mohlo být řazení DESC a získat první n řádky, ale to není ve skutečnosti to, co je požadováno, potřeboval bych vědět číslo z vrcholu prvky atd.

Rád bych, aby si razítko, v horní řadě a pak zápas všechny řádky, které mají, že časové razítko, nebo snad něco jiného?

Děkuji předem!

aggregation database max mongodb
2021-11-22 15:18:40
1

Nejlepší odpověď

2

Budete muset využít vlastní vyhledávání provádět vyhledávání na stejné kolekce po nalezení maximální hodnoty.

db.collection.aggregate([
  {
    "$sort": {
      "timestamp": -1
    }
  },
  {
    "$limit": 1
  },
  {
    "$lookup": {
      "from": "collection",
      "localField": "timestamp",
      "foreignField": "timestamp",
      "as": "topTimeStamp"
    }
  },
  {
    "$project": {
      "_id": 0,
      "result": "$topTimeStamp"
    }
  },
  
])

Mongo Vzorku Provedení

Druh timestamp klíč v sestupném pořadí, jak zlepšit výkon dotazu.

Pokud je počet dokumentů v kolekci bude menší, doporučuji vám nahradit $sort a $limit stupně s $group jeviště a najít maximální hodnotu pomocí $max akumulátor.

2021-11-22 16:02:47

Úžasné, děkuji, přijímám jednou jsem to vyzkoušet!
tgdn

Index na {timestamp:-1} mohl dělat, že první druh/limit blesku rychle.
Joe

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................