時間:2024-02-21 13:55作者:下載吧人氣:16
1.問題
最近在做項目的時候碰到一個對mongoDB的數據處理,從MongoDB中拿到內嵌文檔的時間排序的list。
一開始考慮到直接對mongoDB中的屬性排序,后面發現屬性存在內嵌文檔中,所以處理中需要用到聚合函數。
思考
(key)解決這個問題的過程讓我學到很多,發現自己在解決一個問題不僅查找問題的姿勢不對,浪費太多時間。而且在碰到問題之后,應該多看看解決辦法,甚至解決了之后要去思考問題,回顧問題。而不是像以前一樣,解決問題了就萬事大吉,拋之腦后。
2.解決
需要對document中的一個tweet_list 集合中的一個屬性 timestamp_ms進行排序。 組內排序
使用聚合框架,通過match,unwind,sort等不同的組件創建一個管道。
類似mysql中的多層嵌套子查詢。
mongoDB中js代碼
db.text.aggregate( // Initial document match (uses index, if a suitable one is available) [ { $match: { _id : ObjectId("5ca95b4bfb60ec43b5dd0db5") }}, // Expand the scores array into a stream of documents { $unwind: '$tweet_list' }, { $match: { 'tweet_list.timestamp_ms': '1451841845660' }}, // Sort in descending order { $sort: { 'tweet_list.timestamp_ms': 1 }} ] )
網友評論