ワイヤプロトコルを使用する場合、ドライバによって提供されるラッパーメソッドは、プロトコルから非常に削除されたように見えることがあります。例えば、db.collection.aggregate():あなたは集計dbcmdを下に見たとき https://docs.mongodb.com/manual/reference/method/db.collection.aggregate/
はしかし、それはあなたに多くの手がかりを与える: https://docs.mongodb.com/manual/reference/command/aggregate/#dbcmd.aggregate
ですから、例えば、あなたは、ワイヤプロトコルドライバを持っている場合にOP_QUERYは、その後、DOC_ITEMSと呼ばれるアイテムの配列です別のフィールドとフィールドDOC_NAMEを持つドキュメントを含むコレクションCOLL_nameとデータベースdb_nameのために、あなたは、以下の擬似プロトコルとして集計クエリを実行することができます実装します
OP_QUERY - DB=DB_name, COLL=$cmd
#skip=0
#return=1
query:{
"aggregate": "COLL_name",
"pipeline": [
{
"$project": {
"n_items": {
"$size": "$DOC_ITEMS"
},
"DOC_NAME": 1
}
}
]
}
fields:{
}
あなたのライブラリーは、キーと値の操作を「置く」とオブジェクトと配列を提供している場合、クエリは以下の手順で構築される:
Pipeline = new Array();
ProjectionItems = new Object();
Size = new Object();
Size.Put ("$size", "$DOC_ITEMS");
//calculated field
ProjectionItems.Put ("n_items", Size);
//include "DOC_NAME" field in result projection
ProjectionItems.Put ("DOC_NAME", 1);
Projection_PipelineCmd = new Object();
Projection_PipelineCmd.Put ("$project", ProjectionItems);
//add the projection definition to the pipeline array
Pipeline.Put (Projection_PipelineCmd);
Query = new Object();
Query.Put ("aggregate", "COLL_name");
Query.Put ("pipeline", Pipeline);
希望これは正しい方向にあなたを指して!