通过Nodejs检索插入的MongoDB数据

时间:2011-08-25 16:46:39

标签: mongodb node.js

我正在使用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,所以看起来数据正在进入,我只是不确定如何看到它。

1 个答案:

答案 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命令的完整列表。