是否存在用于数据访问的Mongoose事件?

是否存在用于数据访问的Mongoose事件?,mongoose,Mongoose,我正在我的应用程序中做一些测试,看看内存缓存是否真的在工作。然而,由于内存缓存显然没有公开“命中”事件,所以我无法判断是否正在从缓存中获取数据。所以我试着看看当应用程序实际从数据库中获取一些数据时是否会触发mongoose事件,但似乎没有。我想知道是否有这样的事件?如果是的话,是哪一个?我试着使用这段代码 mongoose.on("open", () => { console.log("Open DB conn"); }); 但只有在我最初连接到数据库时,应用程序启动时才会触发。mo

我正在我的应用程序中做一些测试,看看内存缓存是否真的在工作。然而,由于内存缓存显然没有公开“命中”事件,所以我无法判断是否正在从缓存中获取数据。所以我试着看看当应用程序实际从数据库中获取一些数据时是否会触发mongoose事件,但似乎没有。我想知道是否有这样的事件?如果是的话,是哪一个?我试着使用这段代码

mongoose.on("open", () => {
  console.log("Open DB conn");
});

但只有在我最初连接到数据库时,应用程序启动时才会触发。

mongoose中没有用于评估或审核内存缓存的事件。您所指的事件与连接本身有关。诸如
连接
连接
打开
、和
关闭
等项目就是此类事件的示例。您可以在中看到连接事件的完整列表

根据是否指定了单独的存储引擎,mongodb的默认设置为

要确定是否从WiredTiger访问缓存内存,可以参考stack post的选定答案,其中说明:

任何查询都会导致WiredTiger以未压缩的形式将文档从磁盘加载到其内存部分(所谓的“缓存”)。因此,所有的查询回复都是从“缓存”提供的

至于审计是否使用缓存内存的方法或函数,我无法立即想到任何方法或函数。一种方法是确定启用缓存与禁用/清除缓存时查询所需的时间。删除缓存查询的一种方法是使用
db.collection.getPlanCache().clear()


如果启用缓存时查询时间更快,那么您知道缓存正在工作。

在您的用例中什么是
mongoose
?是猫鼬连接吗?此外,
open
事件仅在连接建立后(即连接打开时)触发。所以,当您说它只在您最初连接到预期的数据库时触发。我明白了,是的,当启用缓存时响应时间确实较低,但我想检查一下,以100%确保一切都正常工作,因为我对Node和Mongoose还是相当陌生:)还有,使用WiredTiger和最新版本的Mongoose时,我是否需要一些特别的东西?或者它和猫鼬没有任何关系?(抱歉,如果这听起来像个愚蠢的问题,但这是我第一次听说)一点也不愚蠢。我不能完全肯定。今天,MongoDB的默认存储引擎是WiredTiger。在以前的版本(3.2之前)中,它是MMAPv1。这篇文章讲述了如何更改您的存储引擎,尽管我自己从来没有这样做过。由于WiredTiger是MongoDBB的默认设置,我假设它是mongoose的默认设置。是的,我深入查看了文档,它看起来像是一个MongoDB设置。但是,有一些示例使用Node.js的MongoDB驱动程序,它们显式地设置了存储引擎选项,因此我不确定mongoose中是否还没有实现。顺便说一下,因为我正在缓存GraphQL响应,所以我现在可以接受这种怀疑