gpt4 book ai didi

javascript - MongoDB 限制字段和切片投影在一起

转载 作者:可可西里 更新时间:2023-11-01 09:59:11 25 4
gpt4 key购买 nike

我有以下用户对象:

{
"_id" : ObjectId("someId"),
"name" : "Bob",
"password" : "fakePassword",
"follower" : [...],
"following" : [..]
}

我需要对关注者列表进行分页,因此我使用切片投影运算符,但我只需要返回分页后的关注者列表。而且我不知道我是不是做错了,或者这做不到,但是限制字段不适用于切片投影。

以下是我尝试过的几个查询:

 collection.findOne(
{
_id: new ObjectId(userId)
},
{
follower: {$slice:[skip, parseInt(pageSize)]},
follower: 1
},..

collection.findOne(
{
_id: new ObjectId(userId)
},
{
follower: 1,
follower: {$slice:[skip, parseInt(pageSize)]}
},

但是这些返回对象中的所有值,并且不限制字段,尽管切片在这两种情况下都可以正常工作。此外,当我执行类似 _id:0,following:0 的操作时,这部分有效,但我不想像这样提及查询中的每个字段,一旦我决定,它可能会产生问题更改模式。我如何让它工作,使它工作的查询语法是什么..??

最佳答案

不确定我是否在此处了解您的使用模式。也许我们可以稍微简化一下这个例子。所以考虑文档:

{
"_id" : ObjectId("537dd763f95ddda3208798c5"),
"name" : "Bob",
"password" : "fakePassword",
"follower" : [
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K"
]
}

所以像这样的简单查询:

db.paging.find(
{ "name": "Bob" },
{
"_id": 0,
"name": 0,
"password": 0,
"follower": { "$slice": [0,3] }
}).pretty()

给出结果:

{
"follower" : [
"A",
"B",
"C"
]
}

同样来自以下页面:

db.paging.find(
{ "name": "Bob" },
{
"_id": 0,
"name": 0,
"password": 0,
"follower": { "$slice": [3,3] }
}).pretty()

给出结果:

{ 
"follower" : [
"D",
"E",
"F"
]
}

因此,就我个人而言,我不确定您是在询问字段排除还是在询问“分页”数组结果,但无论哪种方式,这两个示例都显示在此处。

关于javascript - MongoDB 限制字段和切片投影在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23804254/

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