将JSON.Stringified数据插入MongoDB

时间:2013-03-18 14:55:05

标签: javascript json node.js http mongodb

var obj = {};
obj.url = hostNames[i];
obj.statusCode = res.statusCode;
obj.headers = res.headers;

db.collection.save(JSON.stringify(obj, null, 2));

我目前正尝试通过Node.js请求HTTP响应,然后使用JSON.stringify(将事物转换为JSON文档格式的方法)将该输出解析为MongoDB。出于某种原因,我在MongoDB中获得了一些奇怪的输出,它是这样的:

> db.scrape.find()
{ "_id" : ObjectId("51472849650593014a3c20da"), "0" : "{", "1" : "\n", "2" : " ", "3" : " ", "4" : "\"", "5" : "u", "6" : "r", "7" : "l", "8" :

我认为它正在做的是将每个char解释为一个新变量。我的代码中出了什么问题?

3 个答案:

答案 0 :(得分:8)

为什么要对obj进行字符串化? API需要一个javascript对象。

只是做:

db.collection.save(obj);

答案 1 :(得分:1)

你检查过JSON.stringify(obj,null,2)的输出吗? 我想这会返回预期的结果。

此错误有两种可能的原因: 存储文档的方式是错误的 检索文档的方式是错误的

http://docs.mongodb.org/manual/tutorial/getting-started/(mongodb入门),没有提到在调用insert之前将文档转换为json。

您是否尝试过将其存储起来 db.collection.save({'content':JSON.stringify(obj,null,2)});?

答案 2 :(得分:1)

我在Meteor项目中遇到了同样的问题。 “response”是一个包含json格式数据的字符串。 “保存”方法无效。我只是通过以下方式创建了一个新文档:

 obj = JSON.parse(response);
 db.collection.insert(obj);