sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan sorteres mongodb-forespørgselsresultater baseret på underdokumenter

Du kan bruge cursor.sort() at sortere på flere felter (dybest set en kombination) på samme tid, men jeg tror ikke, det virker, når du sorterer på både et dokument og et underdokumentfelt på samme tid. Hvis du skulle sortere på to forskellige felter i det øverste dokument eller på to forskellige felter i et underdokument, så ville det nok være fint.

Så du kan få et lignende output ved hjælp af aggregation rammer. Alt du skal gøre er grundlæggende at nedbryde arrays af subs felt og derefter sortér dem.

Du kunne gøre noget som:

db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});

Med ovenstående kode skulle du få et output svarende til dette:

 { 
    id: 1, 
    type: 'strs', 
    subs: 
        { time: 1, val: 'ab' }
},{ 
    id: 1, 
    type: 'strs', 
    subs: 
        { time: 20, val: 'cs' }
},{ 
    id: 1, 
    type: 'strs', 
    subs: 
        { time: 50, val: 'be' }
},{ 
    id: 2, 
    type: 'newname', 
    subs: 
        { time: 12, val: 'a' }
},{ 
    id: 2, 
    type: 'newname', 
    subs: 
        { time: 20, val: 'b' }
},{ 
    id: 2, 
    type: 'newname', 
    subs: 
        { time: 30, val: 'c' }
}


  1. vis en dato på en redigering fra fra mongo ved hjælp af ejs

  2. runCommand-ækvivalent for nodejs-native-mongodb

  3. Hvordan gemmer man sessioner i MongoDB fra NodeJS?

  4. Kan ikke bygge projekt ved hjælp af mongodb c++ driver med MSVC