猫鼬是如何在幕后工作的

Dav*_*vid 8 mongoose mongodb mongoose-populate

有人可以告诉我怎么做

我有一个集合

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

j {
 k: String
 l: String
 m: String
}
Run Code Online (Sandbox Code Playgroud)

当我执行一个:

a.find({ b: 'thing' }).populate('d').exec(etc..)
Run Code Online (Sandbox Code Playgroud)

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

我没有遇到填充工作的问题,我关心的是任务的性能影响.

谢谢

Joh*_*yHK 15

Mongoose使用两个查询来完成请求.

a集合进行查询,以取得与主查询,然后在该文档j集合进行查询,以填充d在文档领域.

您可以通过启用调试输出来查看Mongoose正在使用的查询:

mongoose.set('debug', true);
Run Code Online (Sandbox Code Playgroud)

  • @Fdo Mongoose 使用两个查询,导致两次往返。您可以通过启用调试输出来查看它正在使用的查询:`mongoose.set('debug', true);` (2认同)