有 A B C 栏目,每个栏目有 1 个视频集合。建了 4 个 collection 如下
Program=[{name:'A',videos:***},{name:'B',videos:***},{name:'C',videos:***}]
A_videos=[{url:xxx},{url:xxx}.......]
B_videos=[{url:xxx},{url:xxx}.......]
C_videos=[{url:xxx},{url:xxx}.......]
A_videos, B_videos, C_videos 都已经存好数据了,可是 Program 这个 collection 搞不定。。
我想把 Program 中每个栏目( A,B,C )中的 videos 都直接关联到相应的 collection 上( A.videos -> A_videos ),怎么写都不对。。。
Google 到的也都是联合查询方法,建表大致都是说把 全部 videos[X].ObjecID 丢到 Program 的 videos 中。
不能直接指定 Program[X].videos 的 key-value 为 collection 么? 求教。。。 搞了一天要疯了 T.T
我写的 Program 参数如下 ( node / mongoose )
const ObjectId = Schema.Types.ObjectId;
const ProgramSchema = new mongoose.Schema({
name: String,
videos: { type: ObjectId, ref: null }
})
const Program = mongoose.model('Programs', ProgramSchema)
cont PRO_LIST = [
{ name: 'A', vName: 'A_videos' },
{ name: 'B', vName: 'B_videos' },
{ name: 'C', vName: 'C_videos' },
]
ProList.forEach((v) => {
v.vName = {
type: ObjectId,
ref: v.vName
}
Program.update({ name: v.name }, v, { upsert: true }, (err, res) => {
if (err) {
console.log('err', err)
} else {
console.log('ok', res)
}
})
})
1
jakehu 2018-01-04 14:05:21 +08:00
为什么不用 MYsql 我们公司之前用的 mongodb 现在都开始转 mysql
|
2
lovescar 2018-01-04 14:13:53 +08:00
mongoose 的文档里有关于外键的说明,你定义了嘛
|
3
lzszone 2018-01-04 14:49:57 +08:00
没太看明白...
如果你的想法是...视频 ABC 分别用 collection 存的话....没必要..mongodb 也的确没这个功能(也可能是我不知到)... mongodb 官网教程里面有关于数据库设计的章节 我觉得你的情况可以直接将 abc_videos 里面的数据嵌套到 program 里面 ```javascript const programSchema = new Schema({ //... videos:[ {//..., url: String} ] }) ``` 也可以所有视频放一个 collection 用 objectid 关联; 如果我没理解错你的意思的话 为什么 abc 三个类型的视频会用三张表来保存? |
4
lzszone 2018-01-04 14:51:03 +08:00
完了...该用啥来写代码段?
|
6
lqzhgood OP @lzszone
之前搞前端的,数据库设计确实不太懂。 因为 ABC 这几组视频之间没有关联,且目前看来只会用到 时间 排序然后分页,存一起到时候查还要多一步筛选 ABC 类型。想着分开存性能可能会比较好。而且也就 ABC 三组,不会再多了。 [也可以所有视频放一个 collection 用 objectid 关联; ] 这个意思是 Program[A].videos 中放 A_videos 中所有 objectid 的意思么? 更新一个视频到 A_videos,然后把这一条数据的 ObjectId push 到 Program[A].videos 中是吧? P.S 评论不支持 MD 语法。 @yanzixuan 从帝都回到十八线小城市,这里都没有前端这一说,只要 [技术] ,纯前端没饭吃啊 这边技术模式还在 CMS 写模板的阶段,前后端都没分离,算是转行把。 无奈脸 :( |