MongoDB NodeJS Native Driver(mongodb) 对比 Mongo Shell 性能

MongoDB NodeJS Native Driver(mongodb) vs Mongo Shell Performance

我在 MongoDB 中有 10000 条记录 table1.

数据如下:

"_id" : ObjectId("5d5e500cb89312272cfe51fc"),
"cities" : [ 
    {
        "cityid" : "5d5d2205cdd42d1cf0a92b33",
        "value" : "XYZ"
    }, 
    {
        "cityid" : "5d5d2214cdd42d1cf0a92b34",
        "value" : "Rowcliffe"
    }, 
],

查询如下:

      {
        $unwind: "$cities"
      },
      { "$addFields": { "cities.cityid": { "$toObjectId": "$cities.cityid" } } },
      {
        $lookup: {
          from: "cities",
          localField: "cities.cityid",
          foreignField: "_id",
          as: "docs"
        }
      },

所以,这里我在另一个 table 中查找 cityid,在 Robo3T 和 mongo shell 中使用查找查询。一切正常。

我在 0.08 秒 内得到 10000 条记录的结果。

现在,nodejs 中的相同查询 m 运行 与 mongodb native driver,这里 m 在 [=34= 中得到结果]15秒.

我不明白为什么 this.I 之间的巨大差异不知道我在 nodejs.I 中做错了什么在 nodejs 中使用 mongodb native 编写了相同的查询driver.

请让我知道我做错了什么。

为什么这个nodejs mongodb native driver性能这么差?

在 Robo3T 中有一个默认的查询限制,所以它花费的时间更少,因为当它获取限制时它会退出。

为避免这种情况,您需要在查询执行中添加以下片段:

// change the limit size, default 50
DBQuery.shellBatchSize = 500000;