Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 878
theGreenCabbage Avatar asked Dec 26 '22 07:12

theGreenCabbage


2 Answers

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

Just do:

db.collection.save(obj);
like image 96
Iftah Avatar answered Jan 06 '23 07:01

Iftah


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)});?

like image 37
Manfred Andres Avatar answered Jan 06 '23 08:01

Manfred Andres