我正在关注这个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)
}