我有以下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 shelldb.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"
}
请帮助我只想要一个条目,即'db connected at 127.0.0.1:27017'作为单个文档进入mytable。
答案 0 :(得分:1)
Mongo将您尝试插入的string
视为BSON document(因此也是对象)并迭代它的属性,将它们视为文档字段。
尝试插入具有所需值的实际对象作为属性:
collection.insert({status: status}, function(error){
if (error){
console.log("Error : ", error.message);
} else {
console.log("Inserted in to database");
}
});
});