theGreenCabbage
theGreenCabbage

Reputation: 4845

Inserting JSON.Stringified data into MongoDB

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

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

I am currently attempting to request a HTTP response via Node.js, and then parsing that output into a MongoDB with JSON.stringify (a method that transforms things into JSON document format). For some reason, I am getting some weird output in MongoDB, it goes something like this:

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

What I think it is doing is that it is interpreting each char as a new variable. What did I do wrong in my code?

Upvotes: 4

Views: 10961

Answers (3)

Amir Samakar
Amir Samakar

Reputation: 505

I had the same problem in a Meteor project. "response" is a string that contains data in json format. "save" method didn't work. I created a new document simply by:

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

Upvotes: 1

Iftah
Iftah

Reputation: 9572

why stringify the obj? the API expects a javascript object.

Just do:

db.collection.save(obj);

Upvotes: 8

Manfred Andres
Manfred Andres

Reputation: 86

Have you checked the output of JSON.stringify(obj, null, 2)? I guess this would return the expected result.

There are two possible reasons for this error: The way of storing the document is wrong or the way the document is retrieved is wrong

At http://docs.mongodb.org/manual/tutorial/getting-started/ (mongodb getting-started) there is no mention of converting the documents to json before calling insert or whatever.

Have you tried storing it like db.collection.save({'content': JSON.stringify(obj, null, 2)});?

Upvotes: 1

Related Questions