MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да сортирате резултатите от заявката на mongodb въз основа на поддокументи

Можете да използвате cursor.sort() за сортиране на множество полета (по същество комбинация) едновременно, но не мисля, че работи, когато сортирате едновременно в поле на документ и поддокумент. Ако трябваше да сортирате в две различни полета на горния документ или на две различни полета на поддокумент, тогава би било добре предполагам.

Така че можете да получите подобен резултат, като използвате обединяване рамка. Всичко, което трябва да направите, е основно да разбиете масивите от subs поле и след това сортиране тях.

Можете да направите нещо като:

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

С горния код трябва да получите изход, подобен на този:

 { 
    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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Средна заявка за агрегиране на Mongo без група

  2. MongoDB:едновременни ли са четенията/записите в базата данни?

  3. Mongo $exists заявката не връща правилни документи

  4. MongoDB документите изтичат твърде скоро (mongoose)

  5. Как да добавя нови обекти в вложен масив за mongodb с помощта на node.js?