2015-08-15 46 views
1

假裝我有這個文件:有沒有辦法在MongoDB的文檔中返回數組的一部分?

{ 
    "name": "Bob", 
    "friends": [ 
     "Alice", 
     "Joe", 
     "Phil" 
    ], 
    "posts": [ 
     12, 
     15, 
     55, 
     61, 
     525, 
     515 
    ] 
} 

所有這些都是好的,只有職位屈指可數。然而,假設posts大幅增長(並達到10K +帖子的點)。一位朋友提到我可以保持數組的順序(即第一個條目是最新帖子的ID,所以我不必排序),並將新帖子添加到開頭。這樣,我可以得到數組的第一個,即10個元素以獲得10個最新的項目。

有沒有辦法一次只檢索帖子n?我不需要返回10K個帖子,當時大多數帖子都不會被查看,但我仍然需要留下記錄。

回答

3

可以在投影使用的MongoDB $slice接線員給n的數組元素,如下列:

db.collection.find({ 
    //add condition here 
    }, { 
    "posts": { 
    $slice: 3 //set number of element here 
     //negative number slices from end of array 
    } 
}) 
-1

你可以這樣做: 創造你想擁有的職位列表(說你要前3帖子)並返回該列表

for doc in db.collections.find({your query}): 
    temp =() 
    for i in range (2): 
     temp.push(doc['posts'][i]) 
    return temp 
+0

這仍然會對數據庫執行大查詢 – serge1peshcoff

相關問題