我是MongoDB的新手。我有以下数据。 Empid,Name,Salary,Resume(简历为PDF格式)。
现在我可以使用mongo shell插入id,名称和工资,如下所示。
db.test.insert({empid:100,Name:'Gaurav',Salary:1000});
我正在使用mongofiles命令在数据库中上传简历。
mongofiles -d test put "C:\resume.pdf"
所以我能够在数据库中插入数据和pdf。
我的问题是如何将empid 100与简历联系起来。
答案 0 :(得分:0)
你有几个选择:
在您的员工文档中添加一个字段,该字段引用files
之前的_id
集合:
db.test.insert({empid: 100, Name: 'Gaurav', Salary: 1000, fileId: ObjectId("53019397a8f26bc570896972")});
我更喜欢这个选项,因为它允许您将files
用于不同目的,而不会使用为员工信息等特定需求创建的字段来污染它。当您使用mongofiles
放置文件时,它返回一个新创建的文档的ID。将其用作fileId
的值。如果您使用mongo驱动程序并获取ID,则同样有效。
将empid
字段添加到files
集合。 GridFS将文件存储在2个集合中:chunks
和files
(字段列表位于此doc中)。由于与选项3相同的原因而不完美。
将员工文档中的所有字段移至files
集合 - 如果您计划将files
用于恢复存储以外的任何其他操作,则不是最佳做法。
答案 1 :(得分:0)
当您使用mongofiles实用程序插入FS网格时,文件将被放入集合fs.files中(块将存储在fs.chunks中)。文件必须存在于不同的集合中,因为网格FS使用不同的引擎。
Mongofiles仅适用于文件名,因此您可以像下面一样存储文件名和查询,也可以在调用后解析实用程序响应。
执行mongofiles命令后,您将拥有:
db.fs.files.find();
{
_id: ObjectId('530191f8fc518a0ecdfd45a6'),
filename: "file.pdf",
chunkSize: 262144,
uploadDate: new Date(1392611832917),
md5: "b1ee25bcd665e2d6d7c4f4d6f08f44a3",
length: 40098
}
与您的员工条目链接:
> db.test.insert({empid:100,Name:'Gaurav',Salary:1000, file: ObjectId("530191f8fc518a0ecdfd45a6")});
> db.test.find();
{ "_id" : ObjectId("530195bd58f2d10f8b6703a4"), "empid" : 100, "Name" : "Gaurav", "Salary" : 1000, "file" : ObjectId("530191f8fc518a0ecdfd45a6") }
如果您还需要指定数据库和集合,请使用数据库引用(http://docs.mongodb.org/manual/reference/database-references/)