在mongodb – nodejs中获取集合的键/列

我正在尝试使用以下代码获取集合的所有列/键:

var Db = require('mongodb').Db; //for mongodb var Connection = require('mongodb').Connection; var Server = require('mongodb').Server; var BSON = require('mongodb').Server; var ObjectID = require('mongodb').ObjectID; DbModels = function(host, port){ this.db = new Db('test', new Server(host, port,{auto_reconnect:true},{})); this.db.open(function(){}); }; DbModels.prototype.testDb=function(_collection){ console.log("Collection:"); console.log(this.db.collection('persons').find()); var mr = this.db.runCommand({ "mapreduce":"br_205_results", "map" : function(){ for (var key in this){emit(key, null);} }, "reduce" : function(key, stuff){ return null; } }); console.log(mr); db[mr.result].distinct("_id"); }; 

但是我得到以下错误:

 TypeError: Object [object Object] has no method 'runCommand' at [object Object].testDb (c:\Program Files\nodejs\DbModels.js:17:22) at c:\Program Files\nodejs\socketio.js:164:14 at callbacks (c:\Program Files\nodejs\node_modules\express\lib\router\index.js:272:11) at param (c:\Program Files\nodejs\node_modules\express\lib\router\index.js:246:11) at pass (c:\Program Files\nodejs\node_modules\express\lib\router\index.js:253:5) at Router._dispatch (c:\Program Files\nodejs\node_modules\express\lib\router\index.js:280:4) at Object.handle (c:\Program Files\nodejs\node_modules\express\lib\router\index.js:45:10) at next (c:\Program Files\nodejs\node_modules\connect\lib\http.js:203:15) at Object.handle (c:\Program Files\nodejs\node_modules\now\lib\now.js:213:7) at next (c:\Program Files\nodejs\node_modules\connect\lib\http.js:203:15) 

任何想法,我怎么能解决这个问题?

问题是你正在使用的MongoDB驱动程序( mongodb-native )没有实现在Mongo控制台中find的接口。 这就是为什么你用runCommand看到这个错误。 你有两个select:

  1. 切换到蒙古DeadBeef (坏名字,我知道)。
  2. 尝试命令executeDbCommand 。

祝你好运!