我正在使用Node.js:
代码示例:
//Query the API and save file
var file = '../data/employees.json';
tl.employees.all(function(response) {
fs.writeFile(file, JSON.stringify(response, function(key, value) {
var result = value;
return result;
}, 3, 'utf8'));
//Inserts API response above to MongoDB
var insertDocument = function(db, callback) {
db.collection('employees').insert(response, function(err, result) {
assert.equal(err, null);
console.log("Step 2: Inserted Employees");
callback();
});
};
这一切都运行正常,我将以下JSON保存到文件并导入到MongoDB:
{
"data": [
{
"full name": "Keith Richards",
"age": 21,
"userName": "keith1@keith.com",
"employeeDetails": {
"id": 102522
}
},
{
"full name": "Jim Morrison",
"age": 27,
"userName": "jim@jim.com",
"employeeDetails": {
"id": 135522
}
}
]
}
问题在于,由于“数据”部分,它会作为1个对象导入MongoDB。
像这样:
{
"_id" : ObjectId("58ae5ceac10d7a5005fc8370"),
"data" : [
{ // contents as shown in JSON above ..
这使聚合和匹配变得非常困难(或不可能)。
有没有办法剥离“数据”部分并只导入它的内容,所以每个“员工”都会成为它自己的对象:
[
{
"_id" : ObjectId("58ae5ceac10d7a5005fc8370"),
"full name": "Keith Richards",
"age": 21,
"userName": "keith1@keith.com",
"employeeDetails": {
"id": 102522
}
},
{
"_id" : ObjectId("234332c10d7a5005fc8370"),
"full name": "Jim Morrison",
"age": 27,
"userName": "jim@jim.com",
"employeeDetails": {
"id": 135522
}
}
]
答案 0 :(得分:1)
因此,您可以在将Json发送到文件之前对其进行解析。获得结果后,使用parseJSON(data)检查它是否包含“data”字段。如果是,请将数组放入其中并将其存储到文件中。 基本上,我已经解释了@Bertrand所说的更多内容。 希望这会有所帮助。