节点 Mongo db.runCommand 不是函数

Nag*_*hab 5 mongodb node.js

我正在关注这个SO 问题以使用 Node 在 Mongo 上运行命令,我想运行的命令是:

db.runCommand( { serverStatus: 1, repl: 0, metrics: 0, locks: 0, wiredTiger: 
0, logicalSessionRecordCache: 0, transactions: 0, logicalSessionRecordCache: 
0, tcmalloc: 0, storageEngine: 0, opLatencies: 0, opcountersRepl: 0, 
network: 0, extra_info: 0, asserts: 0, globalLock: 0 } )
Run Code Online (Sandbox Code Playgroud)

但是当我尝试类似的东西时:

db.runCommand( { serverStatus: 1 }, function(err, data) {
    if (!err)  console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

或者

db.command( { serverStatus: 1 }, function(err, data) {
    if (!err)  console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

甚至是问题中的那个

db.command({ distinct: "Messages", key: "session" }, function (err, data) 
{
    if (!err)  console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

我收到一个is not a function错误:

TypeError: db.runCommand is not a function TypeError: db.command is not a function

这是我的代码:

import { MongoClient, Db, ObjectId } from 'mongodb';
...
async pingServer() {
    let connectionStr = 'mongodb://localhost:27017';
    MongoClient.connect(connectionStr, function (err, db) {
        if(!err) {
            db.command({ distinct: "Messages", key: "session" }, function (err, data) {
                if (!err)  console.log(data);
            });
        } else {
            console.log("error",err);
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 mongodb 3.0.6

我也尝试做var MongoClient = require("mongodb").MongoClient;而不是导入(我正在使用 TypeScript)并得到相同的结果。

我究竟做错了什么?

小智 2

您可能必须指定数据库的名称,因为 conncetion.db 本身就是一个函数。因此,如果您的数据库称为数据,您可以编写:

import { MongoClient, Db, ObjectId } from 'mongodb';
...
async pingServer() {
let connectionStr = 'mongodb://localhost:27017';
MongoClient.connect(connectionStr, function (err, db) {
    if(!err) {
        db("data").command({ distinct: "Messages", key: "session" }, function (err, data) {
            if (!err)  console.log(data);
        });
    } else {
        console.log("error",err);
    }
})
Run Code Online (Sandbox Code Playgroud)

}