谁能告诉我怎么做

我有一个Collection

a {
 b: String
 c: Date
 d: ObjectId --> j
}

j {
 k: String
 l: String
 m: String
}

当我执行以下操作时:

a.find({ b: 'thing' }).populate('d').exec(etc..)

在后台,这实际上是在对MongoDB执行两个查询,以返回所有项目"j"吗?

我在工作中没有任何问题,我关心的是任务的性能影响.

谢谢

推荐答案

Mongoose使用两个查询来满足请求.

查询a集合以获取与主查询匹配的文档,然后查询j集合以填充文档中的d字段.

通过启用调试输出,可以看到Mongoose使用的查询:

mongoose.set('debug', true);

Mongodb相关问答推荐

如何拉平mongo DB中的对象并在根目录中保存时有条件地重命名字段?

为什么 mongoose 在 mongodb 中找不到我的数据

MongoDB - 将对象转换为数组

MongoDB 按日期时间字段查询 1h 间隔

如何使用 MindsDB 和 MQL(对于我的 MongoDB 实例)实施零样本分类?

如何判断 MongoDB 的两个数组中是否存在值?

Mongodb,在一个查询中用正则表达式更新部分字符串

在mongodb中,如何使用聚合来获取字段之间的对应关系

如何替换mongodb中的动态键?

如何使用 Golang 库获取 MongoDB 版本?

哪个库最适合用于带有 Scala 的 MongoDB?

.insertOne 不是函数

.save() 不是函数 Mongoose

如何使用 Spring Data MongoDB 通过 GridFS ObjectId 获取二进制流

如何在mongo中插入带有日期的文档?

Mongoose 中不同集合的相同模式

Mongoose.js 通过一个 connect() 调用创建到 MongoDB 的多个连接

MongoDB $or 查询

Java + MongoDB:更新文档中的多个字段

在 NodeJs 中处理 Mongodb 全局连接的最佳方法是什么