Nodejs 怎样用 MongoDB 脚本访问和打印数据? // 找到了临时方案

Nodejs 怎样用 MongoDB 脚本访问和打印数据? // 找到了临时方案

简单的操作, 我从 Mongo Shell 尝试有成功的,

con = new Mongo('192.168.1.11')
db = con.getDB('demo')
db.auth('name', 'passwd')
rs.slaveOk()
db.demoofdemo.find()

能打印出一些数据内容(具体变量名替换了), 但是内容保存为脚本却无法运行成功,

或者说没有正确的反应:

➤➤ mongo demo.js
MongoDB shell version: 2.4.3
connection to: test

➤➤ mongo demo.js 
MongoDB shell version: 2.4.4-pre-
connecting to: test

我应该怎样用脚本去快速查看数据库内容呢?


➤➤ mongo < demo.js 

用重定向现在能正常跑命令了, 不过无法打印出数据. 似乎 mongodb shell 不是输出到 stdout


db.demoofdemo.find().forEach(printjson)

StackOverflow 上忘了哪个问题, 看到这个方案, 可以打印了…


2 回复

要使用 Node.js 通过 MongoDB 脚本访问并打印数据,可以使用 mongodb 包来实现。下面是一个简单的示例,展示了如何连接到 MongoDB 数据库、查询数据,并将其打印出来。

示例代码

首先,确保你已经安装了 mongodb 包:

npm install mongodb

然后,你可以创建一个 JavaScript 文件(例如 mongoDemo.js),并在其中编写以下代码:

const { MongoClient } = require('mongodb');

async function main() {
    const uri = "mongodb://name:passwd@192.168.1.11:27017/demo"; // 替换为你的连接字符串
    const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

    try {
        await client.connect();
        console.log("Connected to MongoDB");

        const database = client.db('demo');
        const collection = database.collection('demoofdemo'); // 替换为你的集合名称

        const cursor = collection.find({});
        await cursor.forEach(doc => console.log(doc));

    } catch (err) {
        console.error(err);
    } finally {
        await client.close();
    }
}

main().catch(console.error);

解释

  1. 引入 mongodb

    const { MongoClient } = require('mongodb');
    
  2. 连接到 MongoDB

    const uri = "mongodb://name:passwd@192.168.1.11:27017/demo";
    const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
    

    这里使用了完整的 URI,包括用户名、密码、主机地址和数据库名称。

  3. 连接数据库并查询数据

    await client.connect();
    console.log("Connected to MongoDB");
    
    const database = client.db('demo');
    const collection = database.collection('demoofdemo');
    const cursor = collection.find({});
    await cursor.forEach(doc => console.log(doc));
    

    使用 find({}) 查询所有文档,并通过 forEach 遍历结果集,将每个文档打印到控制台。

  4. 关闭连接

    await client.close();
    

运行脚本

保存文件后,可以通过 Node.js 运行该脚本:

node mongoDemo.js

这样,你就可以通过 Node.js 脚本连接到 MongoDB 并打印出所有文档。这种方式比直接使用 MongoDB Shell 更加灵活,特别是在需要自动化任务时。


要在 Node.js 中使用 MongoDB 访问和打印数据,你可以使用 mongodb 这个 npm 包。以下是一个简单的示例,展示了如何连接到 MongoDB 并打印集合中的数据。

首先,你需要安装 mongodb 包:

npm install mongodb

然后,你可以创建一个脚本文件(比如 mongoDemo.js)来实现这一功能:

const { MongoClient } = require('mongodb');

async function run() {
    const uri = "mongodb://name:passwd@192.168.1.11:27017/?authSource=demo";
    const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

    try {
        await client.connect();
        const database = client.db('demo');
        const collection = database.collection('demoofdemo');

        // 查询所有文档
        const cursor = collection.find({});
        await cursor.forEach(doc => console.log(doc));
    } finally {
        await client.close();
    }
}

run().catch(console.error);

在这个脚本中:

  1. 使用 MongoClient 连接到 MongoDB 数据库。
  2. 使用 find() 方法查询集合中的所有文档。
  3. 使用 forEach 遍历查询结果,并将每个文档打印到控制台。
  4. 最后关闭数据库连接。

你可以通过运行 node mongoDemo.js 来执行这个脚本,它将会连接到指定的 MongoDB 服务器并打印出集合中的数据。

这样,你就可以在 Node.js 中轻松地访问和打印 MongoDB 中的数据了。

回到顶部