2

我试图在 python 中构建一个简单的应用程序,其中我有与标签相关联的标签。

给定以下数据:

书:

+-------------+--------------------------------+
|     id      |             tags               |
+-------------+--------------------------------+
|      1      |     [python, ruby, rails]      |
+-------------+--------------------------------+
|      2      |     [fiction, fantasy]         |
+-------------+--------------------------------+
|      3      |     [fiction, adventure]       |
+-------------+--------------------------------+

我将如何(使用 pymongo)找到:

  1. 所有标记为“小说”的书籍
  2. 系统中的所有唯一标签
4

1 回答 1

3

1. 按标签查找所有书籍:

db.books.find({tags: 'ruby'})

如果您索引该字段,这将更快。

db.books.ensureIndex({tags: 1})

2.找到所有独特的标签

您可以使用 map-reduce

var map = function() {
  this.tags.forEach(function(t) {
    emit(t, 1);
  })
};

var reduce = function(k, vals) {
  return {k, 1}
};

db.books.mapReduce(map, reduce, {out: 'temp_collection_name'});

所有示例都在 javascript 中,它们应该立即在 mongo shell 中工作。我留给你阅读 pymongo 文档并翻译片段。

于 2012-07-20T19:25:26.833 回答