2017-05-31 159 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} })漂亮();' –

相关问题