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
的对象。返回实际数据时有一个光标。是的,正确,我的错误。因此,如果我说,这两个集合具有相同的数据,但由于它们是集合的两个独立实例,因此不能等同,这是正确的吗?是的,确实如此。它们是集合的两个独立实例
,因此它们的引用相等性不同。