2017-05-31 158 views
0

我正在使用node.js和MongoDB。我有收集與下面的模式:如何對集合MongoDB中的對象數組進行排序?

var project = new Schema({ 
head:{ 
    head_task: String, 
    userID: String 
}, 
access_users: { 
    type : Array , 
    "default" : []}, 
context_task: [{ 
      from_name: String, 
      status: Boolean, 
      task: String, 
      created_task: { 
       type: Date, 
       default: Date.now() 
      } 
     }], 
created: { 
     type: Date, 
     default: Date.now 
    }}); 

我怎樣才能通過文檔場context_task.created_task排序按降序。 我認爲我必須使用聚合查詢

db.tasks.aggregate({$match :{"_id":ObjectId("590e2d7d4d4a5e0b647d0835")}}, 
{$sort: {"context_task.created_task": -1}}).pretty(); 

但排序不起作用。 也許我必須對客戶端上的數據進行排序? 任何人都可以幫助我解決這個問題嗎?

+0

請參閱本https://stackoverflow.com/questions/13449874/how-to-sort-array-inside-collection-record-in-mongodb –

+0

並當您使用.find它的工作()? db.tasks.find({「_id」:ObjectId(「590e2d7d4d4a5e0b647d0835」)},{sort:「context_task.created_task」:1})? – Tamas

+0

@Dinesh,謝謝,它幫助了我。 –

回答

0

$ sort已棄用。你需要使用find來使用排序功能。

db.tasks.find({_id : "590e2d7d4d4a5e0b647d0835" }) 
.sort({context_task.created_task : 1}) 
.limit(1) 
+0

謝謝,但它不適合我。我正在使用下一個查詢和這個工作。 'db.tasks.aggregate({$ match:{「_id」:ObjectId(「592e87cf7a91b810209235cc」)}},{$ unwind:'$ context_task'},{$ sort:{'context_task.created_task':-1} })漂亮();' –

相關問題