¿Es .collection() barato? Porque en el siguiente ejemplo, a y b no son lo mismo...
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(); }); ¿Deberíamos usar una sola instancia de .collection() en toda la aplicación? ¿O es barato crear un .collection() ?
Creo que la línea console.log(a == b); está devolviendo False porque a y b son dos cursores únicos diferentes, que aunque tienen los mismos datos, pero tienen direcciones únicas diferentes.
Creo que no es porque . .collection , es porque client.db .
El controlador de nodo MongoDB no se basa en una sola conexión. Utiliza connection pooling y el poolSize predeterminado es 5.
Dado que intenta conectar la misma base de datos con diferentes conexiones del grupo de conexiones, el cursor que está utilizando también es diferente.
Según mi conocimiento, debe crear y usar nuevos objetos de colección desde su objeto de base de datos, en el momento en que lo vaya a usar. Si usa el mismo objeto de colección para cada operación de su base de datos, terminará usando una única conexión de base de datos en lugar de múltiples conexiones en el grupo de conexiones.
Y si lo desea, también puede aumentar el poolSize del grupo del controlador del nodo MongoDB.
También puede consultar las otras opciones en los documentos. http://mongodb.github.io/node-mongodb-native/3.6/api/MongoClient.html#.connect