无法使用node.js中的MongoClient列出mongodb集合中的文档

时间:2014-12-25 22:03:18

标签: javascript node.js mongodb

我可以使用MongoClient从node.js连接到我的数据库。我能够从集合中编写,更新和删除文档。但我无法从中检索数据。这是我的代码:

var mongoClient=require('mongodb').MongoClient;
var mongoDbObj;

mongoClient.connect('mongodb://127.0.0.1:27017/trendoa', function(err, db){
  if(err){
    console.log(err);
  }else{
    global.db = db;
};

var col = global.db.collection('twitter_accounts_mon');

// create
var doc1 = {'hola':'sushi'};
col.insert(doc1, function(err, result) {
  callback(err);
});

// update
col.update({hola:'jordi'}, {$set:{hola:'joan'}}, {w:1}, function(err, result) {});

// delete
col.remove({hola:'jordi'}, function(err, result) {
  callback(err);
});

// read
col.find().toArray(function(err, docs) {
    console.log(docs);
});

我在最后几行代码中尝试做的是使用find()获取所有文档,但它不会返回任何结果。

通过mongo shell,使用此命令我在屏幕上获取数据:

db.twitter_accounts_mon.find()

我不知道自己做错了什么。谢谢!

2 个答案:

答案 0 :(得分:3)

nodejs回调必须嵌套,即只在db打开后才搜索集合

mongoClient.connect('mongodb://127.0.0.1:27017/trendoa', function(err, db){
    var col = db.collection('twitter_accounts_mon');
    coll.find({}, function(err, cursor) {
        cursor.toArray(function(err, data) {
            // process the data array
        }
    }
}

答案 1 :(得分:0)

根据Node.js驱动程序上的MongoDB documentation find 方法不执行实际查询,它构建游标的实例然后,您可以使用它来检索数据。因此,您需要处理查询的结果。

var entireCollectionArray = col.find().toArray(function(err, items) {});

entireCollectionArray.forEach(function (element) {
     console.log(element);
});