2012-01-31 2 views
2

Я пытаюсь получить все столбцы/ключи в коллекции, используя следующий код:Получение ключей/столбцов коллекции в 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) 

Любая идея, как я могу это решить?

ответ

2

Проблема заключается в том, что используемый вами драйвер MongoDB (mongodb-native) не реализует интерфейс, найденный в консоли Mongo. Вот почему вы видите эту ошибку с runCommand. У вас есть два варианта:

  1. Переключить на: Mongolian DeadBeef (имя, я знаю).
  2. Попробуйте ввести команду executeDbCommand.

Удачи вам!

Смежные вопросы