【发布时间】:2026-01-04 12:00:02
【问题描述】:
我无法对嵌套数组进行排序。我已经引用了许多链接,例如link 1,但我仍然没有找到适合我的问题的解决方案。
这是我的 JSON 数据:
{
_id: "5a8bf7e3903cc83237ebd014",
prospect_name: "Akruthi",
phone: "9878979879",
email: "",
address: "Kundapur",
landmark: "Grt",
city: "Udupi",
state: "5a869c795eb34ecae3ab1ef6",
region: "5a8689725eb34ecae3ab1ede",
methodology: 2,
sub_category: "colour",
created_by: "asdadasad",
referred_by: "Self",
remarks: [
{
data: "Good",
user: "5a8c0642903cc83237ebd01f",
created_at: "2018-02-20T10:26:43.686Z",
remarksId: "5a8bf7e3903cc83237ebd013",
},
{
data: "test 1",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:35:30.615Z",
remarksId: "5a8cf7122ad6f00da98a3f05",
},
{
data: "test 2",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:41:45.514Z",
remarksId: "5a8cf889160046121e3f1b25",
},
{
data: "test 3",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:54:01.018Z",
remarksId: "5a8cfb69ea4e7c14c1f7c550",
},
],
created_at: "2018-02-20T10:26:43.686Z"
}
我在node.js中做了如下查询:
return collection_name
.aggregate([
{ $match: { _id: objectid(id) } },
{ $lookup: { from: 'state', localField: 'state', foreignField: '_id', as: 'state_details' } },
{ $lookup: { from: 'region', localField: 'region', foreignField: '_id', as: 'region_details' } },
{ $lookup: { from: 'users', localField: 'remarks.user', foreignField: '_id', as: 'remarks_details' } },
{ $unwind: '$remarks' },
{ $sort: { 'remarks.created_at': -1 } },
{ $group: { _id: '$_id', remarks: { $push: '$remarks' } } },
])
我得到的结果是:(得到排序的结果,但丢失了其他字段)
{
_id: "5a8bf7e3903cc83237ebd014",
remarks: [
{
data: "test 3",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:54:01.018Z",
remarksId: "5a8cfb69ea4e7c14c1f7c550"
},
{
data: "test 2",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:41:45.514Z",
remarksId: "5a8cf889160046121e3f1b25"
},
{
data: "test 1",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:35:30.615Z",
remarksId: "5a8cf7122ad6f00da98a3f05"
},
{
data: "Good",
user: "5a8c0642903cc83237ebd01f",
created_at: "2018-02-20T10:26:43.686Z",
remarksId: "5a8bf7e3903cc83237ebd013"
}
]
}
在我的结果中,我丢失了除 remarks 之外的所有其他字段。我也想要结果以及其他字段。我尝试了$project 操作,但仍然没有用。
预期结果:
{
_id: "5a8bf7e3903cc83237ebd014",
prospect_name: "Akruthi",
phone: "9878979879",
email: "",
address: "Kundapur",
landmark: "Grt",
city: "Udupi",
state: "5a869c795eb34ecae3ab1ef6",
region: "5a8689725eb34ecae3ab1ede",
methodology: 2,
sub_category: "colour",
created_by: "asdadasad",
referred_by: "Self",
remarks: [
{
data: "test 3",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:54:01.018Z",
remarksId: "5a8cfb69ea4e7c14c1f7c550"
},
{
data: "test 2",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:41:45.514Z",
remarksId: "5a8cf889160046121e3f1b25"
},
{
data: "test 1",
user: "5a858129e6e8f6724d6aa551",
created_at: "2018-02-21T04:35:30.615Z",
remarksId: "5a8cf7122ad6f00da98a3f05"
},
{
data: "Good",
user: "5a8c0642903cc83237ebd01f",
created_at: "2018-02-20T10:26:43.686Z",
remarksId: "5a8bf7e3903cc83237ebd013"
}
],
created_at: "2018-02-20T10:26:43.686Z"
}
【问题讨论】:
-
尝试 $$root 获取所有字段。
-
你能举个例子
$root -
我更新了评论。请检查
-
是的,请给我
$$root的查询示例。我之前从未尝试过$$root