gpt4 book ai didi

mongodb - 如何在 mongo 集合中获取子文档数组的分页/切片数据?

转载 作者:IT老高 更新时间:2023-10-28 13:34:44 32 4
gpt4 key购买 nike

我有一个这样的收藏:

{
"_id" : ObjectId("51f4ad560364f5490ccebe26"),
"fiTpcs" : [
"uuid1",
"uuid2",
"uuid3",
"uuid4",
"uuid5"
],
"fiTpcsCnt" : 5
}

fiTpcs的列表很长,以后可以上百个。当我检索我的集合时,我想获得一个有限的 fiTpcs 列表,一次说 20 个,并发出单独的请求以从 fiTpcs 获取后续数据。我只是想确保当我有更多数据时查询不会变慢。有没有办法在mongodb中做到这一点?直到现在,我一直在做

db.userext.find({"_id" : ObjectId("51f4ad560364f5490ccebe26")}).pretty();

这总是让我得到完整的 fiTpcs 数组。我正在使用带有 Spring 的 java 驱动程序,使用 Spring/java 的解决方案也可以。请注意 - 如果解决方案需要 mongo 扫描整个 fiTpcs 数组,然后切片其中的一部分,它并没有真正增加任何性能优势,这不是我想要的。

最佳答案

我可能无法完全理解您的问题,但似乎是 $slice是您正在寻找的机器人:

> db.page.find()
{ "_id" : ObjectId("51f4ad560364f5490ccebe26"), "fiTpcs" : [ "uuid1", "uuid2", "uuid3", "uuid4", "uuid5" ], "fiTpcsCnt" : 2 }
> db.page.find({}, {"fiTpcs" : {$slice : 3}})
{ "_id" : ObjectId("51f4ad560364f5490ccebe26"), "fiTpcs" : [ "uuid1", "uuid2", "uuid3" ], "fiTpcsCnt" : 2 }
> db.page.find({}, {"fiTpcs" : {$slice : [1,3]}})
{ "_id" : ObjectId("51f4ad560364f5490ccebe26"), "fiTpcs" : [ "uuid2", "uuid3", "uuid4" ], "fiTpcsCnt" : 2 }

关于mongodb - 如何在 mongo 集合中获取子文档数组的分页/切片数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18157823/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com