Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 他正在打电话;。集合();创建新实例(mongodb集合)便宜吗?_Node.js_Mongodb - Fatal编程技术网

Node.js 他正在打电话;。集合();创建新实例(mongodb集合)便宜吗?

Node.js 他正在打电话;。集合();创建新实例(mongodb集合)便宜吗?,node.js,mongodb,Node.js,Mongodb,.collection()便宜吗?因为在下面的例子中,a和b是不同的 import { MongoClient } from "mongodb"; const mongoClient = new MongoClient('mongodb://localhost:27017', { useUnifiedTopology: true }); mongoClient.connect().then(client => { const a = client.db(&q

.collection()
便宜吗?因为在下面的例子中,
a
b
是不同的

import { MongoClient } from "mongodb";

const mongoClient = new MongoClient('mongodb://localhost:27017', { useUnifiedTopology: true });

mongoClient.connect().then(client => {
    const a = client.db("test").collection("demo");
    const b = client.db("test").collection("demo");
    console.log(a == b); // false

    mongoClient.close();
});
我们应该在整个应用程序中使用一个
.collection()
实例吗?
或者创建一个
.collection()
是否便宜?

我认为行
console.log(a==b)
返回的是
False
,因为
a
b
是两个不同的唯一游标,虽然它们具有相同的数据,但具有不同的唯一地址。

我认为这不是因为
.collection
,而是因为
client.db

MongoDB节点驱动程序不是基于单连接的。它使用
连接池
,默认池大小为5

由于您试图使用连接池中的不同连接连接同一数据库,所以您使用的游标也不同

据我所知,在使用数据库对象时,应该从数据库对象创建和使用新的集合对象。如果对每个数据库操作使用相同的集合对象,则最终将使用单个数据库连接,而不是连接池中的多个连接

如果需要,还可以增加MongoDB节点驱动程序的
poolSize


您也可以从文档中检查其他选项

我在这里提出质疑,因为目前不接受任何新问题……如果您对性能如此关注,您可以检查这里到底发生了什么:。这将引导您找到此处的
集合
构造函数:。您还可以测量此值。创建几千个这样的对象,并比较它比只创建一个要花多少时间。对!但是,我还是想使用一个
.collection()
实例…请参见]
。collection()
不返回游标,它返回类型为
collection
的对象。返回实际数据时有一个光标。是的,正确,我的错误。因此,如果我说,这两个集合具有相同的数据,但由于它们是集合的两个独立实例,因此不能等同,这是正确的吗?是的,确实如此。它们是
集合的两个独立实例
,因此它们的引用相等性不同。