如何对集合MongoDB中的对象数组进行排序?
问题描述:
我正在使用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();
但排序不起作用。 也许我必须对客户端上的数据进行排序? 任何人都可以帮助我解决这个问题吗?
答
$ 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} })漂亮();' –
请参阅本https://stackoverflow.com/questions/13449874/how-to-sort-array-inside-collection-record-in-mongodb –
并当您使用.find它的工作()? db.tasks.find({“_id”:ObjectId(“590e2d7d4d4a5e0b647d0835”)},{sort:“context_task.created_task”:1})? – Tamas
@Dinesh,谢谢,它帮助了我。 –