在mongodb中查询某些字段是否只节省查询时间?

在mongodb中查询某些字段是否只节省查询时间?,mongodb,mongoose,mongodb-query,Mongodb,Mongoose,Mongodb Query,mongodb查询是否节省查询时间 假设我有一个如下所示的模式 const CommentSchema = new mongoose.Schema({ commentText:{ type:String, required: true }, arrayOfReplies: [{ replyText:{ type:String, required: true

mongodb查询是否节省查询时间

假设我有一个如下所示的模式

const CommentSchema = new mongoose.Schema({
    commentText:{
        type:String,
        required: true
    },
    arrayOfReplies: [{  
        replyText:{
            type:String,
            required: true
        },
        likes: [{
            objectIdOfUser: {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'User',
                required: true,
            },
        }],
    }],
});
我试图找出mongodb是查询整个文档然后对其进行过滤,还是在mongodb内部进行过滤

如果我有一个大的
arrayOfReplies
数组,例如500000个回复。与查询整个文档相比,下面的查询是否会节省查询时间

Comment.findById(id,'commentText',函数(err,Comment){})

编辑

我之前问过这个问题(见下文)。我改变了我的问题,以反映我真正想问的问题。尽管下面这个问题的答案仍然存在


Comment.findById(id,'replyText',函数(err,Comment){})

在某些情况下,仅投影所需的字段可能会影响性能

如果投影允许查询完全恢复,则由于根本不需要加载文档,因此可以有显著的改进。您可以使用
explain
运行查询,查看是否需要
fetch
阶段

mongod将从磁盘将整个文档提取到缓存中,然后将所需数据从缓存复制到响应中

如果查询返回大量文档,减少每个文档返回的数据量将减少在网络上发送所需的时间,并允许在单个响应批中容纳更多文档,从而减少网络开销


在查询查找单个注释并获取replyText数组的示例中,您可能会看到通过不包含类似内容来减少通过网络发送的数据量的一些微不足道的好处。(这是假设您实际上没有索引replyText)

谢谢,但我在问题中犯了一个错误。我的意思是
commentText
而不是
replyText
会省去
arrayOfReplies
对查询性能的帮助吗?请更新您的答案,以便它可以回答这两个问题,以便任何感兴趣的人都可以得到信息的帮助。谢谢。mongod仍将从磁盘中提取整个文档,但省略replyText可能会显著减少网络流量。