我可以在集合中获得积极的元素......
var collection;
collection = db.collection("allCodes");
collection.count(function(err, count) {
if (err) {
throw err;
}
console.log("There are " + count + " records.");
});
...带输出:
Connected to Database ok
There are 354 records.
...但无法获取此集合中的元素:
collection.find().each(function(err, doc) {
if (err) {
throw err;
}
console.log("each doc");
console.log(doc);
});
......它什么都不打印。我是mongodb的新手。那么我做错了什么?我想在allCodes
集合中打印所有元素。
更新:所有插入数据的代码都会被计算,然后尝试自己获取数据,但什么都没有出来。
var MongoClient, collection;
MongoClient = require("mongodb").MongoClient;
var objectToInsert = [{
'a': 1
}, {
'a': 2
}, {
'b': 3
}]
MongoClient.connect("mongodb://127.0.0.1:27017/test", function(err, db) {
console.log("Connected to Database");
collection = db.collection("test2");
// clear collection -------------------------------
collection.remove(function(err, result) {
// insert ------------------------------------
collection.insert(objectToInsert, function(docs) {
// count - ok -----------------------------------
collection.count(function(err, count) {
console.log("Count: " + count);
// find - fail - no objects printed -----------------------
collection.find().toArray(function(err, docs) {
console.log("Printing docs from Array");
docs.forEach(function(doc) {
console.log("Doc from array");
console.log(doc);
});
});
db.close();
});
});
});
});
它有输出:
Connected to Database
Count: 3
为什么我只算数。我的数据在哪里?
答案 0 :(得分:2)
在find
有机会完成之前,您已关闭与数据库的连接。
将db.close()
调用移到toArray
的回调中,如下所示:
collection.find().toArray(function(err, docs) {
console.log("Printing docs from Array");
docs.forEach(function(doc) {
console.log("Doc from array");
console.log(doc);
});
db.close();
});
答案 1 :(得分:0)
免责声明:我根本不熟悉node.js。
从example in the documentation开始,您似乎需要先创建一个游标对象,然后再遍历结果。我不确定链接命令的注意事项。
var cursor = collection.find();
// Execute the each command, triggers for each document
cursor.each( function( err, item ) {
console.log( "each doc" );
});