【问题标题】:How sort array of objects in collection MongoDB? [duplicate]如何对集合 MongoDB 中的对象数组进行排序? [复制]
【发布时间】:2017-11-01 07:08:16
【问题描述】:

我正在使用 node.js 和 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
    }});

如何通过 DESC 字段 context_task.created_task 获取文档排序。 我认为我必须使用聚合查询

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

但排序不起作用。 也许我必须在客户端对数据进行排序? 谁能帮我解答这个问题?

【问题讨论】:

  • 使用 .find() 时是否有效? db.tasks.find({ "_id":ObjectId("590e2d7d4d4a5e0b647d0835") }, { sort: "context_task.created_task": 1 }) ?
  • @Dinesh,谢谢,它帮助了我。

标签: javascript node.js mongodb sorting mongoose


【解决方案1】:

$sort 已弃用。您需要在查找中使用排序功能。

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

【讨论】:

  • 谢谢,但这对我不起作用。我正在使用下一个查询并且这个工作。 db.tasks.aggregate({$match: { "_id":ObjectId("592e87cf7a91b810209235cc")}},{ $unwind: '$context_task' },{$sort: {'context_task.created_task': -1}}).pretty();
猜你喜欢
  • 2019-05-30
  • 2020-05-18
  • 2021-05-30
  • 2010-11-15
  • 2022-01-20
  • 2012-11-07
  • 2013-02-24
  • 2016-07-12
相关资源
最近更新 更多