1

排序的子场我有一个架构是这样的:与未知的父

{ 
    "_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”是不正确的路径,因为它的阵列。

如何按子字段“时间”排序连接?

而且在同一个查询过滤器“用户”中出现连接ID可能是可能的吗?

回答

1

请尽量通过做.aggregation()

> db.mycollecion.aggregate([ 
          {$unwind: '$connections'}, 
          {$sort: {'connections.time': 1}}, 
          {$group: { 
             _id: '$_id', 
             connections: {$push: '$connections'} 
            } 
          }]); 
+0

我读过,但没看懂。谢谢! https://docs.mongodb.org/manual/aggregation/ http://php.net/manual/es/mongocollection.aggregate.php – ephramd