Node Mongo db.runCommand不是一个函数

时间:2018-04-11 01:33:53

标签: node.js mongodb

我跟着这个SO question使用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 } )

但是当我尝试这样的事情时:

db.runCommand( { serverStatus: 1 }, function(err, data) {
    if (!err)  console.log(data);
});

db.command( { serverStatus: 1 }, function(err, data) {
    if (!err)  console.log(data);
});

甚至是问题中的那个

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

我收到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);
        }
    })
}

我正在使用mongodb 3.0.6

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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

导入
  import {MongoClient,Db,ObjectId};
...
异步pingServer(){
让connectionStr ='mongodb:// localhost:27017';
MongoClient.connect(connectionStr,function(err,db){
    if(!err){
        db(“ data”)。command({分别为:“消息”,键:“会话”},函数(错误,数据){
            如果(!err)console.log(data);
        });
    }其他{
        console.log(“错误”,err);
    }
})
 

}