時(shí)間:2024-02-21 13:55作者:下載吧人氣:15
1.問題
最近在做項(xiàng)目的時(shí)候碰到一個(gè)對(duì)mongoDB的數(shù)據(jù)處理,從MongoDB中拿到內(nèi)嵌文檔的時(shí)間排序的list。
一開始考慮到直接對(duì)mongoDB中的屬性排序,后面發(fā)現(xiàn)屬性存在內(nèi)嵌文檔中,所以處理中需要用到聚合函數(shù)。
思考
(key)解決這個(gè)問題的過程讓我學(xué)到很多,發(fā)現(xiàn)自己在解決一個(gè)問題不僅查找問題的姿勢(shì)不對(duì),浪費(fèi)太多時(shí)間。而且在碰到問題之后,應(yīng)該多看看解決辦法,甚至解決了之后要去思考問題,回顧問題。而不是像以前一樣,解決問題了就萬(wàn)事大吉,拋之腦后。
2.解決
需要對(duì)document中的一個(gè)tweet_list 集合中的一個(gè)屬性 timestamp_ms進(jìn)行排序。 組內(nèi)排序
使用聚合框架,通過match,unwind,sort等不同的組件創(chuàng)建一個(gè)管道。
類似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 }} ] )
網(wǎng)友評(píng)論