Mongoose使用相关

因为一个同学的推荐,项目中使用了Mongoose作为MongoDB的接口。在从MongoDB原生Node.js接口转到Mongoose的过程中遇到了一系列问题,记录一下。

一个collection存放多种不同类型数据

由于MongoDB是非关系型数据库,所以按理来说里面塞什么都可以,但是Mongoose里Schema的操作把MongoDB作为一个关系型数据库使用。使用过程中发现可以通过注册多个schema在一个collection里实现同一个collection存放不同数据结构。

var storySchema = Schema({
  creator :String,
  title    : String
});

var paperSchema = Schema({
  creator :String,
  title    : String,
  rank   : Number
});
//把两个Schema注册到同一个collection-- books
var Story  = mongoose.model('Story', storySchema,'books');
var Paper  = mongoose.model('Paper', paperSchema,'books');

联合查找

同样是因为node的异步特性和MongoDB的非关系性让联合查找极其困难,不过可以通过populate函数实现通过ref: 'Model注册名'预先设定好的外键替换为其他表中的object。

具体可见:
在mongoose中填充外键


总体来说Mongoose还是比较坑的,下一个项目还是用回原生的MongoDB接口吧。。。

你可能感兴趣的:(Mongoose使用相关)