我正在使用Nodejs通过MongoDB插入一些数据:
var db = new mongo.Db("mydb", new mongo.Server("localhost", '27017', {}), {});
db.open(function() {
db.collection("entry", function(error, collection) {
data = {
"time":(new Date()).getTime()
}
collection.insert(data, function() {
console.log("saved", arguments);
});
});
});
但是,如果我这样做,我甚至都不会看到数据库:
$ mongo localhost
> db.getCollectionNames();
[ "system.indexes" ]
所以我通过以下方式手动添加了这个集合:
> db.createCollection('mydb');
{ "ok" : 1 }
然后我看到了:
> db.getCollectionNames();
[ "mydb", "system.indexes" ]
但如果我跑:
> db.mydb.find().count()
我会看到:0
我运行节点脚本后,我会尝试db.mydb.find().count()
,但仍然会得到0
。我怀疑我在某个地方错过了一个重要的部分。
我还应该注意,当我运行我的节点脚本时,我确实看到了“已保存”和来自该函数的一些args,所以看起来数据正在进入,我只是不确定如何看到它。
答案 0 :(得分:1)
看起来您在示例代码和问题描述中混淆了数据库和集合的概念。而不是db.getCollectionNames(),用它来查找MongoDB服务器上可用的数据库:
显示dbs
您的代码正在向“mydb”数据库中的“entry”集合添加记录。连接到mongo shell后,尝试:
使用mydb
然后:
db.entry.find()
哪个应该显示您新创建的记录。
您可以查看http://www.mongodb.org/display/DOCS/DBA+Operations+from+the+Shell以获取有用的shell命令的完整列表。