在MongoDB中是否有方法返回文档中的部分数组?

在MongoDB中是否有方法返回文档中的部分数组?,mongodb,Mongodb,假设我有这个文件: { "name": "Bob", "friends": [ "Alice", "Joe", "Phil" ], "posts": [ 12, 15, 55, 61, 525, 515 ] } 只有少数几个帖子,一切都很好。然而,让我们假设帖子大幅增长(并达到10K+帖子)。一位朋友提到,我可能

假设我有这个文件:

{
    "name": "Bob",
    "friends": [
        "Alice",
        "Joe",
        "Phil"
    ],
    "posts": [
        12,
        15,
        55,
        61,
        525,
        515
    ]
}
只有少数几个帖子,一切都很好。然而,让我们假设
帖子
大幅增长(并达到10K+帖子)。一位朋友提到,我可能能够将数组保持有序(即,第一个条目是最新帖子的ID,因此我不必排序),并将新帖子附加到开头。这样,我就可以得到数组的第一个,比如说,10个元素来得到10个最新的项目

是否有一种方法一次只能检索帖子
n
?我不需要返回10K个帖子,因为大多数帖子都不会被查看,但我仍然需要保留记录。

您可以在投影中使用mongoDB操作符从数组中获取n个元素,如下所示:

db.collection.find({
   //add condition here
  }, {
    "posts": {
    $slice: 3 //set number of element here
      //negative number slices from end of array
    }
})
您可以这样做: 为你想要的帖子创建一个列表(假设你想要前3篇帖子)并返回该列表

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

这仍然会对数据库进行大的查询