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 シェルですぐに動作するはずです。pymongo のドキュメントを読み、スニペットを翻訳するのはあなたに任せます。

于 2012-07-20T19:25:26.833 に答える