如何对存储在mongodb中的元数据进行分类

时间:2013-06-26 10:10:25

标签: java mongodb metadata taxonomy

我已经提取了一些文件(pdf,html,txt,doc)的元数据,并以json格式在mongodb中进行了stroed。 我的mongodb集合中的示例文档如下

{"Author: ":null,"Title: ":"java Syllabus","File name: ":"sample.htm"}
{"Author: ":null,"Title: ":"php Syllabus","File name: ":"sample1.htm"}
{"Author: ":null,"Title: ":null,"File name: ":"sample2.pdf"}

我的要求是对文档中的上述字段进行分类。这可能吗?如果有可能请建议我。 感谢

1 个答案:

答案 0 :(得分:2)

通过“分类法”,您希望为每个文档存储任意键/值对,然后按这些值进行查询吗?您可能会发现MongoDB Content Taxonomy Schema是一个有用的资源。

要点是顶级文档将包含一个包含零个或多个对象数组的字段。每个对象都将在其自己的字段中包含键和值。然后,您可以在数组中的键/值字段上创建compoundmulti-key index。虽然复合,多键索引不能包含多个数组字段(事件可能很快就会因为从每个数组中索引Cartesian product个元素而失控),在这种情况下,我们会在同一个数组中索引两个字段。 / p>

要使用示例数据,您可能拥有以下内容:

> db.foo.insert({
  filename: "sample.htm",
  taxonomy: [
    { k: "author", v: "Bob Smith" },
    { k: "title", v: "Java Syllabus" }
  ]
});
> db.foo.ensureIndex({ "taxonomy.k": 1, "taxonomy.v": 1 });

根据链接博客文章中的示例,您可以使用$elemMatch按键/值条件进行查询,以确保键/值都包含在同一个数组元素中。