1

我已经提取了一些文件(pdf、html、txt、doc)的元数据,并以 json 格式在 mongodb 中搜索。我的 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"}

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

4

1 回答 1

2

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

要点是顶级文档将有一个包含零个或多个对象数组的字段。这些对象中的每一个都将在它们自己的字段中包含键和值。然后,您可以在数组中的键/值字段上创建复合多键索引。尽管复合的多键索引不能包含多个数组字段(索引每个数组中元素的笛卡尔积可能很快就会失控),在这种情况下,我们要索引同一个数组中的两个字段。

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

> 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以确保键/值都包含在同一个数组元素中。

于 2013-06-27T19:54:47.640 回答