MongoDB NodeJS本机驱动程序(mongodb)vs Mongo Shell性能

时间:2019-09-04 13:51:23

标签: node.js mongodb mongodb-query mongodb-.net-driver node-mongodb-native

我在表1的MongoDB中有10000条记录。

数据如下:

"_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"
        }
      },

因此,在这里,我在另一个表中使用Robo3T和mongo shell中的查找查询来查找cityid。一切正常。

我在 0.08秒中获得10000条记录的结果。

现在,使用mongodb本机驱动程序在 nodejs中运行相同的查询,这里在 15秒内获得结果。

我不明白为什么两者之间会有如此巨大的差异。我不知道我在nodejs中做错了什么。我已经使用mongodb本机驱动程序在nodejs中编写了相同的查询。

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

为什么此nodejs mongodb本机驱动程序性能如此差?

1 个答案:

答案 0 :(得分:1)

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

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

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