对父级未知的子字段进行排序
Sort subfields with unknown parent
我有这样的架构:
{
"_id" : "555",
"connections" : [
{
"id" : 111
"time" : 1456439249
},
{
"id" : 222
"time" : 1556412345
}
...
}
"users" : [
"111" : {
"id" : 111
"name" : "Michael"
},
"222" : {
"id" : 222
"name" : "Jim"
}
...
}
我想要按时间和用户数据排序的连接。
我正在尝试这样做:
db.getCollection('mycollecion')
.find(
{'_id' : '555'},
{'_id' : 0, 'connections' : 1, 'users' : 1}
).sort({'connections.time' : 1})
可能 "connections.time" 不是正确的路径,因为它是数组。
如何按子字段对连接进行排序 "time"?
是否可以在同一个查询过滤器 "users" 中出现在连接 ID 上?
请尝试通过.aggregation()
> db.mycollecion.aggregate([
{$unwind: '$connections'},
{$sort: {'connections.time': 1}},
{$group: {
_id: '$_id',
connections: {$push: '$connections'}
}
}]);
我有这样的架构:
{
"_id" : "555",
"connections" : [
{
"id" : 111
"time" : 1456439249
},
{
"id" : 222
"time" : 1556412345
}
...
}
"users" : [
"111" : {
"id" : 111
"name" : "Michael"
},
"222" : {
"id" : 222
"name" : "Jim"
}
...
}
我想要按时间和用户数据排序的连接。
我正在尝试这样做:
db.getCollection('mycollecion')
.find(
{'_id' : '555'},
{'_id' : 0, 'connections' : 1, 'users' : 1}
).sort({'connections.time' : 1})
可能 "connections.time" 不是正确的路径,因为它是数组。
如何按子字段对连接进行排序 "time"?
是否可以在同一个查询过滤器 "users" 中出现在连接 ID 上?
请尝试通过.aggregation()
> db.mycollecion.aggregate([
{$unwind: '$connections'},
{$sort: {'connections.time': 1}},
{$group: {
_id: '$_id',
connections: {$push: '$connections'}
}
}]);