3

我有以下 node.js 代码,它通过它连接到 mongoDB,我想将 node.js 控制台上显示的消息插入到名为“mytable”的集合中。我面临的问题是它成功连接到 mongoDB,并且它还插入了在 node.js 控制台上显示的消息,但它不是作为一个完整的文档插入,而是作为字符插入。为什么会这样?请帮忙

var mongo = require("mongodb");
var dbhost = "127.0.0.1";
var dbport = mongo.Connection.DEFAULT_PORT;
var db = new mongo.Db("mydb", new mongo.Server(dbhost, dbport, {}), {safe: true});
db.open(function(error){
        status = ("db connected at" + dbhost + " : " + dbport);
        console.log(status);

        db.collection("mytable",function (error,collection){

        collection.insert(status, function(error){

            if (error){
                console.log("Error : ", error.message);
            } else {
                console.log("Inserted in to database");
                } 

            });
        }); 


});

我的节点控制台显示输出为

db connected at127.0.0.1 : 27017
Inserted in to database

在使用命令检查“mytable”mongo shell 时

db.mytable.find.forEach(printjson)

它显示以下输出

{

"_id" : objectId("5207741d193770459f068317"),
"0" : "d",
"1" : "b",
"3" : " ",
"4" : "c",
"5" : "o",
"6" : "n",
"7" : "e",
"8" : "c",
"9" : "t",
"10" : "e",

"28" : "7",
"29" : "0",
"30" : "1",
"31" : "7"

}

请帮助我只希望将一个条目,即“连接在 127.0.0.1 的数据库:27017”作为单个文档插入到 mytable 中。

4

1 回答 1

1

Mongo 将string您尝试插入的文件视为BSON 文档(因此也是一个对象),并迭代它的属性,将它们视为文档字段。

尝试使用您想要的值作为属性插入一个实际对象:

collection.insert({status: status}, function(error){

        if (error){
            console.log("Error : ", error.message);
        } else {
            console.log("Inserted in to database");
            } 

        });
    }); 
于 2013-08-11T11:57:01.000 回答