2017-03-27 33 views
0

我正在處理按最大到最小(海拔)的順序對我的數據進行排序的查詢。我的結果必須只顯示「aircraft_id」和「高度」。另外,當我的清單被排序時,前幾百個條目都是在稍微不同的時間記錄的所有重複記錄。所以我需要排除包含相同高度和aircraft_id的重複項。目前我有如下...Mongo查詢不顯示重複排序並僅顯示某些字段

db.planes.aggregate([{$match: 
{altitude: {$ne: ""}}}, 
{$sort: {altitude: -1}}], 
{allowedDiskUse: true}) 

我不確定這個問題是否有任何意義,但任何幫助,非常感謝。

+0

我們查詢,但我們沒有您所查詢的數據樣本。請更新問題樣本文件和您試圖獲得的樣本結果 –

回答

0

要獲得唯一的aricraft_id和海拔高度對,您可以通過aircraft_id將文件分組,並添加要設置的唯一高度(使用$addToSet操作)。之後,展開團體以獲得獨特的配對。

使用$project階段只選擇你想要的字段:

db.planes.aggregate([ 
    {$match: {altitude: {$ne: ""}}}, 
    {$group: {_id: "$aircraft_id", altitude: {$addToSet: "$altitude"}}}, 
    {$unwind: "$altitude"}, 
    {$project: {"aircraft_id": "$_id", "altitude": 1 }}, 
    {$sort: {altitude: -1 }} 
], 
{allowedDiskUse: true}) 
+0

當我運行該查詢時,沒有任何反應,mongo似乎期待更多的代碼編寫。當我按Enter鍵時,它會移動到一個新行並打印「...」。如果我再次輸入兩次,它會回到等待一個新的命令。 – sixshotsix

+0

@sixshotsix在$ group階段有一個缺少花括號。順便說一句,在這個問題下看到我的評論? –