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