MGCoreなるJSの検索ライブラリを書いた
久々に何か書く気力が湧きました。お久しぶりでございます。
しばらく前に某案件にて、ある元のデータリストをダウンロード後、クライアント側で(=JavaScriptを使って)条件に応じてフィルタリングして表示する、というのがあり、その検索部分をサクッと作ってみました。まあつまり、テストがちゃんと出来てなくて、どこかにバグがあるかもという意味なのですが。。。
夜なべしてMongoDBのドキュメント見ながら、インターフェイスを合わせてみました。一晩でやった割にはそこそこのものができたんじゃないかな、と:)
→ GitHub - taiyoh/js-mgcore: search interface like MongoDB
使い方は、結構ここが参考になると思います
→ Query Documents — MongoDB Manual
// basic var list = [{name:'foo'},{name:'bar'},{name:'baz'}]; var db = new MGCore(list); // case 1 var result1 = db.find({name:'foo'}); result1.toArray(); // => [{name:'foo'}] // case 2 var result2 = db.find({name:/^ba/}); result2.toArray(); // => [{name:'bar'},{name:'baz'}] // deep var list2 = [{name:'foo', attr:{count:5}},{name:'bar',attr:{count:3}}]; var db2 = new MGCore(list2); // case 3 var result3 = db2.find({'attr.count':{'$gt':3}}); result3.toArray(); // => [{name:'foo', attr:{count:5}}]
次の段階としてやりたいのは、このMGCoreを継承したクラスでインデックスを張って、検索処理を高速化させたりしたいなぁ、とかあるのですが、あんまりいじくってる時間ないので、やりたい方はどうぞ><