带有gridfs的mongodb中的Handeling文件
我有以下问题,我试着找到一个多星期的答案,并且在网上找不到任何有趣的答案:
1)是否可以通过gridfs 2将同一mongofile请求中的不同文件插入到mongo数据库中?文件是否可以与uniq files_id
2)我有用户收集,每个用户都有一个或多个上传到mongodb的文件。是否可以在用户和文件之间建立链接?我想知道哪个文件属于每个用户。
3)因此可以在用户集合中拥有文件的元数据(默认为fs.files)。例如,看起来像:
{
_id:112,
Firstname:“Mickael”,
Lasttname:“Jackson”,
Files:[
{
_id:5910e57f24f3f7047494720c
"filename":"File1",
"chunkSize":NumberInt(261120),
"uploadDate":ISODate("2014-04-13T11:32:33.557Z"),
"md5":"7b762939321e146569b07f72c62cca4f",
"length":NumberInt(646)
},
{
_id:1841e57f24f3f7047494720b
"filename":"File2",
"chunkSize":NumberInt(261120),
"uploadDate":ISODate("2014-04-13T11:32:33.557Z"),
"md5":"7b762939321e146569b07f72c62cca4f",
"length":NumberInt(646)
}
]
}
提前感谢您的回答。
答案 0 :(得分:2)
是否可以通过gridfs 2将同一mongofile请求中的不同文件插入mongo数据库?这些文件可以具有相同且唯一的files_id。
即使这是可能的,我也不建议这样做。您应该为每个文件执行一个请求。 不,他们不能拥有相同的独特_id。如果您需要辅助ID,请使用fs.file
我有用户收集,每个用户都有一个或多个文件上传到mongodb。是否可以在用户和文件之间建立链接?我想知道哪个文件属于每个用户。
是的,您可以在fs.files集合中的用户和文档之间创建链接。 为此,您可以使用DBRefs,https://docs.mongodb.com/manual/reference/database-references/#dbrefs。在user.files中存储fs.files文档的引用的位置 基本上,您可以拥有这样的用户结构,
{
_id:112,
Firstname:“Mickael”,
Lasttname:“Jackson”,
Files:[ //YOU WILL ONLY STORE _id of fs.files
{
"$ref" : "fs.files",
"$id" : ObjectId("5126bc054aed4daf9e2ab772"),//file of id
"$db" : <database name>
}
]
}
或者你甚至可以在fs.files中拥有元数据属性并在那里分配用户ID。
{
_id:1841e57f24f3f7047494720b
"filename":"File2",
"chunkSize":NumberInt(261120),
"uploadDate":ISODate("2014-04-13T11:32:33.557Z"),
"md5":"7b762939321e146569b07f72c62cca4f",
"length":NumberInt(646)
"metadata" :{
user : {
"$ref" : "users",
"$id" : 112,
"$db" : <database name>
}
}
请注意,没有类似SQL的约束, 如果删除用户,则还必须删除属于该用户的文件。 否则会有孤儿。
因此可以在用户集合中拥有文件的元数据(默认情况下为fs.files)。
我不认为这是可能的。因为fs.files必须是它自己的集合。 此外,在设计方面,这种分离更好。
答案 1 :(得分:0)
{
_id:112,
Firstname:“Mickael”,
Lasttname:“Jackson”,
Files:[
{
_id:5910e57f24f3f7047494720c
"filename":"File1",
"chunkSize":NumberInt(261120),
"uploadDate":ISODate("2014-04-13T11:32:33.557Z"),
"md5":"7b762939321e146569b07f72c62cca4f",
"length":NumberInt(646)
},
{
_id:1841e57f24f3f7047494720b
"filename":"File2",
"chunkSize":NumberInt(261120),
"uploadDate":ISODate("2014-04-13T11:32:33.557Z"),
"md5":"7b762939321e146569b07f72c62cca4f",
"length":NumberInt(646)
}
]
}
这是您的格式化代码