あらゆる種類のデータを保持するかなり大きな MongoDB ドキュメントがあります。コレクション内の配列タイプのフィールドを識別して、データを入力するグリッド内の表示フィールドからそれらのフィールドを削除できるようにする必要があります。
私の方法は、コレクション内のすべてのフィールド名を取得することで構成されています
これは、MongoDB Get names of all keys in collection に投稿された応答から取得したものです。
mr = db.runCommand({
"mapreduce" : "Product",
"map" : function() {
for (var key in this) { emit(key, null); }
},
"reduce" : function(key, stuff) { return null; },
"out": "things" + "_keys"
})
db[mr.result].distinct("_id")
そして、各フィールドに対して次のようなクエリを実行します
db.Product.find( { $where : "Array.isArray(this.Orders)" } ).count()
取得されたものがある場合、フィールドは配列と見なされます。
n+2 クエリ ( n はコレクション内の異なるフィールドの数) を実行する必要があり、モデル内のフィールドをハードコーディングしたくありません。MongoDB を使用する目的全体が無効になります。
これを行うより良い方法はありますか?