我跟着这个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)并得到相同的结果。
我做错了什么?
答案 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);
}
})
}