mongodb 如何设计多级结构?

作者站长头像
站长
· 阅读数 8

各位,最近在学mongodb的时候有两个疑问,

(1)对于类似 文件夹-文件 这种多级的结构,如果使用mongodb,应该怎么设计集合的结构?就比如这样的一个文件夹目录:

dirA
├── dirB
│   └── txtC.txt
├── txtA.txt
└── txtB.txt

在一个文件夹下,可以创建文件夹或者文件,然后文件夹下又可以继续重复这个过程,如果要保存类似这样的结构,应该怎么设计集合呢?就类似下面这样,该怎么定义结构?

{
    type: 'dir',
    name: 'dirA',
    files: [
        {type: 'dir', name: 'dirB', files:[{type: 'file', name: 'txtC.txt'}]},
        {type: 'file', name: 'txtA.txt'},
        {type: 'file', name: 'txtB.txt'}
    ]
}

(2)如何在mongodb中保存文件?

可能描述的不是很清楚问题,凑合理解吧。。。

回复
1个回答
avatar
test
2024-06-30
db.files.insertMany( [
  { _id: "1", "name": "dirA", "type": "dir", ancestors: [ ], parent: null }
  { _id: "2", "name": "dirB", "type": "dir", ancestors: [ "1" ], parent: "1" },
  { _id: "3", "name": "txtA.txt", "type": "file", ancestors: [ "1" ], parent: "1" },
  { _id: "4", "name": "txtB.txt", "type": "file", ancestors: [ "1" ], parent: "1" },
  { _id: "5", "name": "txtC.txt", "type": "file", ancestors: [  "1", "2" ], parent: "2" }
] )

唯一约束

db.files.createIndex( { "name": 1, "parent": 1}, { unique: true } )
MongoDB数据模型设计(3)具有祖先数组的模型树结构作者:冰糕不冰链接:https://juejin.cn/post/6982210696431796237#heading-12来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
基于 Linux 一切皆文件的设计思想,目录其实也是个文件,你甚至可以通过 vim 打开它,它也有 inode,inode 里面也是指向一些块。answer image详细讲解,Linux内核——文件系统(建议收藏) - Linux嵌入式的文章 - 知乎https://zhuanlan.zhihu.com/p/505338841
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容