Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

286
Views
Se puede acceder a la colección Mongo a través de mongosh (mongo shell) pero no del script nodejs

Ejecutando el proceso mongod en segundo plano, en el shell mongo (mongosh), tengo la base de datos de wikipedia cargada en mi base de datos "enwiki". Entonces, en el shell, puedo escribir db.pages.find() y me mostrará algunas páginas de Wikipedia. De manera similar, si llamo a db.getCollectionNames() , devuelve ['pages']. db.getCollection("pages").find() también funciona.

Sin embargo, si voy a mi script nodejs, db.collection("pages").find() no contiene nada.

 const MongoClient = require("mongodb").MongoClient; const url = 'mongodb://localhost:27017/'; const dbName = 'enwiki'; const client = new MongoClient(url, { useUnifiedTopology: true }); client.connect().then(client => { console.log('Connected successfully to server'); const db = client.db(dbName); const cursor = db.collection("pages").find(); cursor.forEach(doc => { console.log(doc.plaintext);}); });

Ejecutar el código anterior simplemente imprime 'Conectado correctamente al servidor' y se detiene. (También debería imprimir el texto sin formato de todos mis artículos de Wikipedia en mi base de datos).

Soy nuevo en mongo, así que siento que me estoy perdiendo algo obvio. La base de datos se creó originalmente usando dumpster-dive . Llamar db.listCollections() devuelve esto en el depurador de nodos:

 { _events: Object, _eventsCount: 0, _maxListeners: 'undefined', parent: Db, filter: Object, ... }

Ese objeto no contiene la colección de páginas que espero. ¿Cómo accedo a la colección de páginas?

EDITAR 18/01/22 (día siguiente): lo ejecuté hoy, no en el depurador, y simplemente funcionó. Por alguna razón, ejecutar db.collection("pages").find() y db.collection("pages").find().limit(1) en el depurador de nodos devuelve un objeto extraño similar al anterior. Por otro lado, ejecutando cursor.forEach(doc => { console.log(doc.plaintext);}); en el depurador de nodos simplemente devuelve:

 { [[PromiseState]]: 'pending', [[PromiseResult]]: 'undefined' }

Y termina sin hacer nada más, así que pensé que no estaba haciendo nada. En mi código no completamente reducido que se muestra aquí, también tenía un par de errores tipográficos dentro de la promesa forEach cuyos errores se suprimían.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El código anterior funciona y simplemente no parecía funcionar. En mi caso, creo que fue una combinación de supresión de errores que no estaba viendo y este extraño comportamiento del depurador de nodos que me hizo creer que no estaba funcionando. Me encantaría una explicación de por qué ocurre este comportamiento del depurador y cómo evitarlo/solucionarlo.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!