假装我有这份文件:
{
"name": "Bob",
"friends": [
"Alice",
"Joe",
"Phil"
],
"posts": [
12,
15,
55,
61,
525,
515
]
}
只有少数帖子,一切都很好。但是,让我们说posts
大幅度增长(并达到10K +帖子点)。一位朋友提到我可以按顺序保持数组(即第一个条目是最新帖子的ID,所以我不必排序)并在开头添加新帖子。通过这种方式,我可以得到数组的第一个,比方说10个元素,以获得10个最新的项目。
有没有办法一次只检索帖子n
?我不需要返回10K的帖子,当他们中的大多数人甚至不会被看到时,但我仍然需要保留记录。
答案 0 :(得分: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 :(得分:-1)
你可以这样做: 为您想要的帖子创建一个列表(比如说您想要前3个帖子)并返回该列表
for doc in db.collections.find({your query}):
temp = ()
for i in range (2):
temp.push(doc['posts'][i])
return temp