链接pdf与Mongodb中的集合/数据库

时间:2014-02-17 04:28:44

标签: mongodb gridfs

我是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与简历联系起来。

2 个答案:

答案 0 :(得分:0)

你有几个选择:

  1. 在您的员工文档中添加一个字段,该字段引用files之前的_id集合:

    db.test.insert({empid: 100, Name: 'Gaurav', Salary: 1000, fileId: ObjectId("53019397a8f26bc570896972")});
    

    我更喜欢这个选项,因为它允许您将files用于不同目的,而不会使用为员工信息等特定需求创建的字段来污染它。当您使用mongofiles放置文件时,它返回一个新创建的文档的ID。将其用作fileId的值。如果您使用mongo驱动程序并获取ID,则同样有效。

  2. empid字段添加到files集合。 GridFS将文件存储在2个集合中:chunksfiles(字段列表位于此doc中)。由于与选项3相同的原因而不完美。

  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/