我在学习nodejs项目中使用mongodb涉及到2个Collection,accounts和sys_code,查询accounts时,其中的一些字段需要到sys_code查询对应的内容,如果是关系型数据库很简单,不知道node使用mongodb的情况下如何处理。还是我collection设计的就有问题?
var AccountsSchema = new Schema({ date : { type: String }, //消费日期 kind : { type: String }, //收支类型 需要关联sys_code type : { type: String }, //账目分类 需要关联sys_code cash : { type: String }, //金额(元) account : { type: Number, default: 0 }, //资金账户 需要关联sys_code remark : { type: String}, //备注 user_id : { type: ObjectId }, //添加人 create_at: { type: Date, default: Date.now }, update_at: { type: Date, default: Date.now }, active: { type: Boolean, default: true } //是否有效 },{collection : ‘accounts’});
var SysCodeSchema = new Schema({ code_type_no : { type: String }, //代码类型编码 code_order : { type: String }, //代码序号 code_no : { type: String }, //代码编码 code_value : { type: String }, //代码值 code_notes : { type: String}, //代码说明 active: { type: Boolean, default: true } //是否有效
},{collection : ‘sys_code’});
mongodb是非关系型数据库,所以一切逻辑在代码中实现即可,当然考虑效率问题,不然很容易内存溢出
ref populate
正在看api,谢谢
@suqun 用ref populate貌似要重新设计表吧
@hanzel21cn 是的,要改
@suqun 如果不改的话其实也可以,就是在程序里面来实现
mongodb的Join问题大多可使用信息冗余来解决. ref什么的尽量不要用
有道理,最近看了很多关于此的文章, “数据冗余是为了性能,引用数据是为了完整性”。详见: http://virusswb.blog.51cto.com/115214/793135