在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
这仍然会对数据库进行大的查询