Node.js nodej在mongodb中获得查找结果
我正在尝试获取查询结果,但我在所有变量中都得到了相同的信息:db、collection和res:Node.js nodej在mongodb中获得查找结果,node.js,mongodb,Node.js,Mongodb,我正在尝试获取查询结果,但我在所有变量中都得到了相同的信息:db、collection和res: var mongodb = require("mongodb"); var mongoserver = new mongodb.Server("localhost", 27017); var instance = new mongodb.Db("test", mongoserver); instance.open(function(err, db) { console.log('db:');
var mongodb = require("mongodb");
var mongoserver = new mongodb.Server("localhost", 27017);
var instance = new mongodb.Db("test", mongoserver);
instance.open(function(err, db)
{
console.log('db:');
console.log(db);
db.collection('kurtsoa', function(err, collection)
{
console.log('collection:');
console.log(collection);
collection.find({}, function(err, res)
{
console.log('res:');
console.log(res);
});
});
});
如何获得“查找”的结果?您可以使用:
collection.find().toArray(function(err, docs){
console.log(docs);
)};
将返回一个对象供您使用。如果您感兴趣的只是获取阵列中的所有结果,那么您可以执行以下操作:
collection.find().toArray(function(err, docs) {
console.log(docs);
});
但您也可以迭代光标:
collection.find().each(function(err, doc) {
//called once for each doc returned
});
这也是一个更好的答案和解释;一旦“doc”完成对所有项目的迭代,“doc”将被设置为null。在第一个代码片段中,为什么
console.log(typeof(docs))
返回object
toArray()
建议它应该返回一个数组……因此第一个代码段中的docs.each()
不起作用,但是console.log(docs.length)
确实返回文档数。另外,我注意到在第二个代码片段中,console.log(doc)
在迭代所有文档后将返回null。为什么会这样?要回答第一个问题,typeof([])===“object”
。其次,答案是“这就是Cusor在这个API中的工作方式”。