Mongoose - 将 json 对象映射到模式
Mongoose - mapping json object to Schema
我正在努力学习 mongo/mongoose 并将 json 导入 mongodb。
我的 json 包含以下形式的多个对象:
{
"FIELD1": "28/02/2017",
"FIELD2": "string value",
"FIELD3": "100"
},
{
"FIELD1": "28/02/2017",
"FIELD2": "string",
"FIELD3": "57"
},
我有一个模式:
var statementSchema = new Schema({
//date: {type:Date, required: true},
//name : {type:String, required:true},
//amount: {type: Number, required:true}
FIELD1 : {type:String, required:true},
FIELD2: {type:String, required:true},
FIELD3: {type:String, required:true}
});
你可以看到我真的希望数据库中的键比它们在源 json 中更能描述它们包含的值(即我更喜欢 FIELD1
在json 成为数据库中的 date
。
最好的方法是什么?我看过 mongoose-aliasfield,这是最好的方法还是有默认方法来定义 FIELD1 as
someothername in the Schema?
虽然我有你,但从 json 源中的当前字符串分别将 FIELD1 和 FIELD3 转换为 Date
和 Number
的正确方法是什么? ;)
尝试使用这种方式。, ref Mongoose schema data type.
架构:
var statementSchema = new Schema({
FIELD1 : {type:Date, required:true},
FIELD2: {type:String, required:true},
FIELD3: {type:Number, required:true}
});
插入:
db.getCollection('users').save({
"FIELD1": Date("28/02/2017"),
"FIELD2": String("string"),
"FIELD3": Number("57")
})
结果:
{
"_id" : ObjectId("58f8ba663749f1f13fee40d6"),
"FIELD1" : "Thu Apr 20 2017 19:10:54 GMT+0530 (IST)",
"FIELD2" : "string",
"FIELD3" : 57.0
}
好吧,我真的是新手。
架构现已定义:
var statementSchema = new Schema({
date : {type:Date, required:true},
name: {type:String, required:true},
amount: {type:Number, required:true}
});
我插入使用:
var statements= require('../data/convertcsv.json');
var Statement = require('../models/statement');
var mongoose = require('mongoose');
mongoose.connect('localhost:27017/statement');
var parseDate = require('../helpers/parseDate');
var done = 0;
for( var i = 0; i < statements.length; i++ ) {
var newStatement = new Statement();
//helper function breaks string apart, reassembles and returns a Date
newStatement.date = parseDate.stringToDate(statements[i].FIELD1);
newStatement.name = statements[i].FIELD2;
newStatement.amount = Number(statements[i].FIELD3);
newStatement.save(function(err, result){
done++;
if(done === statements.length){
exit();
}
});
}
function exit(){
mongoose.disconnect();
};
我正在努力学习 mongo/mongoose 并将 json 导入 mongodb。
我的 json 包含以下形式的多个对象:
{
"FIELD1": "28/02/2017",
"FIELD2": "string value",
"FIELD3": "100"
},
{
"FIELD1": "28/02/2017",
"FIELD2": "string",
"FIELD3": "57"
},
我有一个模式:
var statementSchema = new Schema({
//date: {type:Date, required: true},
//name : {type:String, required:true},
//amount: {type: Number, required:true}
FIELD1 : {type:String, required:true},
FIELD2: {type:String, required:true},
FIELD3: {type:String, required:true}
});
你可以看到我真的希望数据库中的键比它们在源 json 中更能描述它们包含的值(即我更喜欢 FIELD1
在json 成为数据库中的 date
。
最好的方法是什么?我看过 mongoose-aliasfield,这是最好的方法还是有默认方法来定义 FIELD1 as
someothername in the Schema?
虽然我有你,但从 json 源中的当前字符串分别将 FIELD1 和 FIELD3 转换为 Date
和 Number
的正确方法是什么? ;)
尝试使用这种方式。, ref Mongoose schema data type.
架构:
var statementSchema = new Schema({
FIELD1 : {type:Date, required:true},
FIELD2: {type:String, required:true},
FIELD3: {type:Number, required:true}
});
插入:
db.getCollection('users').save({
"FIELD1": Date("28/02/2017"),
"FIELD2": String("string"),
"FIELD3": Number("57")
})
结果:
{
"_id" : ObjectId("58f8ba663749f1f13fee40d6"),
"FIELD1" : "Thu Apr 20 2017 19:10:54 GMT+0530 (IST)",
"FIELD2" : "string",
"FIELD3" : 57.0
}
好吧,我真的是新手。
架构现已定义:
var statementSchema = new Schema({
date : {type:Date, required:true},
name: {type:String, required:true},
amount: {type:Number, required:true}
});
我插入使用:
var statements= require('../data/convertcsv.json');
var Statement = require('../models/statement');
var mongoose = require('mongoose');
mongoose.connect('localhost:27017/statement');
var parseDate = require('../helpers/parseDate');
var done = 0;
for( var i = 0; i < statements.length; i++ ) {
var newStatement = new Statement();
//helper function breaks string apart, reassembles and returns a Date
newStatement.date = parseDate.stringToDate(statements[i].FIELD1);
newStatement.name = statements[i].FIELD2;
newStatement.amount = Number(statements[i].FIELD3);
newStatement.save(function(err, result){
done++;
if(done === statements.length){
exit();
}
});
}
function exit(){
mongoose.disconnect();
};