我可以使用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()
我不知道自己做错了什么。谢谢!
答案 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);
});