我使用mongoose / nodejs从mongodb获取数据为json。对于使用mongoose,我需要首先像这样定义模式
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var GPSDataSchema = new Schema({
createdAt: { type: Date, default: Date.now }
,speed: {type: String, trim: true}
,battery: { type: String, trim: true }
});
var GPSData = mongoose.model('GPSData', GPSDataSchema);
mongoose.connect('mongodb://localhost/gpsdatabase');
var db = mongoose.connection;
db.on('open', function() {
console.log('DB Started');
});
然后在代码中我可以从db获取数据,如
GPSData.find({"createdAt" : { $gte : dateStr, $lte: nextDate }}, function(err, data) {
res.writeHead(200, {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
});
var body = JSON.stringify(data);
res.end(body);
});
如何为这样的复杂数据定义方案,你可以看到subSection可以进入更深层次。
[
{
'title': 'Some Title',
'subSection': [{
'title': 'Inner1',
'subSection': [
{'titile': 'test', 'url': 'ab/cd'}
]
}]
},
..
]
答案 0 :(得分:1)
var Comment = new Schema({
body : String
, date : Date
});
var Post = new Schema({
title : String
, comments : [Comment]
});
注意Comment
如何定义为Schema
,然后在数组中引用Post.comments
你的情况有点不同:你有一个我自己没有试过的自引用模式,但它看起来像这样:
var sectionSchema = new Schema({
title: String
,subSections: [sectionSchema]
});
mongoose.model('Section', sectionSchema);
然后你可以像这样添加subSections:
var section = new mongoose.model('Section');
section.subSections.push({title:'My First Subsection'})
让我知道这是怎么回事。