2017-04-24 4 views
1

MongoDBのコレクション内のドキュメント内に存在するフィールドとその名前の最大数を取得する方法。 たとえば、testCollectionという名前のコレクションがあり、その中に10個のドキュメントがあり、任意の数の第1レベルのフィールドまたはキーがあります。MongoDBコレクション内の任意のドキュメントのフィールドの最大数を確認してください

最大のフィールド数と名前を持つドキュメントまたはドキュメントを最も迅速に検出する方法を知る必要があります。

私はすべてのメソッドを見つけて各ドキュメントを突き抜けようとしましたが、これは膨大な数の行を持つコレクションにとって望ましいソリューションではありません。

+1

ご利用の場合は何ですか?最も速いアプローチは、各ドキュメントのフィールド数のカウントでインデックス付きフィールドを維持することですが、フィールドが追加および削除されるとカウントを維持するために、アプリケーションコード上に責任があります。フィールドカウントを明示的に追跡しなければ、コレクションスキャンに頼らざるを得ませんが、この要件は珍しいようです。 – Stennie

答えて

0

あなたを助けるかもしれない小さな図書館:

npm install objectdigger 

と例:出力用として

var objectdigger = require("objectdigger") 


var item = { 
    "a": "a", 
    "b": "b", 
    "c": { 
     "c1" : "c1", 
     "c2" : "c2", 
     "c3" : { 
      "c3a" : "c3a", 
      "c3b" : "c3b", 
      "c3c" : [ 
       { "c3ca" : "c3ca" }, 
       { "c3cb" : "c3cb" }, 
       "zzz", 
       { 3: "444"} 
      ] 
     } 
    } 

}; 


console.log(objectdigger.findDeepest(item)); 

{ maxKey: 'c.c3.c3c.c3ca', value: 'c3ca', depth: 3 } 
関連する問題