私はローカルで作業しています - これはライブ Web サイトでは決して行われません。Mongo の文字列化された集計パイプラインを受け入れ、結果をブラウザーに返すノード/エクスプレス サーバーを構築しました。
app.get('/aggregate/:collection', function(req, res) {
var queryObject = JSON.parse(req.param('q'));
var recProvider = getProviderForTable(req.params.collection);
recProvider.getCollection(function(err, collection) {
collection.aggregate(queryObject, {}, function(err, data) {
res.json(data);
});
});
});
これにより、データの視覚化を作成しているブラウザーで簡単なクエリを実行できるようになります。
$.get(LOCAL_SERVER + '/aggregate/my_records?q=' + JSON.stringify(pipeline));
Mongoose が持っているようなクエリ ビルダーを構築し始めようとしましたが、集計パイプライン配列を構築するだけでした。上記のように、ブラウザーで Mongoose のクエリ ビルダーを使用して配列を作成し、それを使用してデータの高速サーバーにアクセスできるかどうか疑問に思っています。
連鎖可能なオブジェクトを構築したいので、例えば...
pipeline()
.where('value').gt(1000)
.where('category').in([1, 2, 3])
.sort('-date')
.skip(100).limit(10);
...集計パイプラインを返します。
[
{
$match: {
value: {
$gt: 1000
},
category: {
$in: [1, 2, 3]
}
}
},
{
$sort: {
date: -1
}
},
{
$skip: 100,
$limit: 10
}
]