豊満な脳みそ←わがままブレーン

ただただ、暗号文をつくりたいがため・・・・・・ 専用の復号プログラムとパスナンバーが9つあれば読めるブログ。さもなければ、ある程度正確に暗号化の仕組みを理解したうえで、総当たり(brute attack)で最大約6,631,300,125,000,000通りの試行が解読に必要です。

100本ノック 第65〜68問目

・・現在もっと大事ないくつかの作業が忙しくて、数日さぼってしまった。

 

言語処理100本ノック 2015 の65〜68問目

 

この4問は要求が単純なので、せいぜい1時間程度の所要時間でクリア。

 

65. MongoDBの検索
MongoDBのインタラクティブシェルを用いて,"Queen"というアーティストに関する情報を取得せよ.さらに,これと同様の処理を行うプログラムを実装せよ.

 

答:

(MongoDB インタラクティブシェル上)

db.artists.find({name:"Queen"}).pretty( )

 

(Pythonのコマンド)

f:id:DWJEqxs2G0:20171006182143p:plain

 

 

 

66. 検索件数の取得
MongoDBのインタラクティブシェルを用いて,活動場所が「Japan」となっているアーティスト数を求めよ.

 

答:

db.artists.count({"area":"Japan"})

 

(活動場所が「Japan」となっているアーティスト数は22821。これが正確な数字。LevelDBの同じ趣旨の操作では答えが異なる。この問題を現在調査中で、Redis等、他のKVSとして機能するソフトを検討している。)

 

 

 

67. 複数のドキュメントの取得
特定の(指定した)別名を持つアーティストを検索せよ.

 

解答例:

db.artists.findOne({"aliases.name":"Project Object"})

出力された検索結果は:

f:id:DWJEqxs2G0:20171006182736p:plain

 

独り言ですが、この検索対象はフランク・ザッパ亡き後のアレです。

 

 

 

68. ソート
"dance"というタグを付与されたアーティストの中でレーティングの投票数が多いアーティスト・トップ10を求めよ.

 

答:

db.artists.find({"tags.value":"dance"}).sort({"rating.value":-1}).limit(10)

 

 

参考にしたサイト:

MongoDB超入門 - Qiita

Mongo Shell 徹底入門 基礎編 - Qiita

[MongoDB] findで深い階層のフィールドを指定して取得する - 物欲にまみれたにしふなばし