1

では、まずスクリーン ショットを見てみましょう。これは、 VCF ファイルと呼ばれるテキスト ファイルのスクリーン ショットです。何行になるでしょうか?おそらく、次のようなものが 100,000 行あります。

ここに画像の説明を入力

私はMongoDBの初心者であり、まったく新しいので、次のようなスキーマを考えました:

ここに画像の説明を入力

たとえば、そのテキスト ファイルの REF はスキーマのキー/値であることに注意してください。しかし、私が言ったように、200,000行あるかもしれません...だから:

  1. 配列は今でも使用できる優れた機能ですか? その配列に 200,000 のメンバーを格納しますか?
  2. どれだけ強力なクエリを実行できますか? たとえば、14370 の POS の #CHROM20 には "G" の REF と "A" の ALT があります。私のスキーマでは、それを見つけて返すことができますか? REF フィールドに「G」が含まれる患者を検索するとします。MongoDB クエリは、検索してそのような結果を返すのに十分強力でしょうか?
  3. それは悪いスキーマですか?より良い推奨事項/アドバイスはありますか?
  4. 問題の qquesry に対して提供できるサンプルクエリは、いくつかのアイデアを提供するのに非常に役立ちます..
4

2 に答える 2

1

REFフィールドに「G」が含まれる患者を検索するとします。

ref:[TCG、TA]はカウントされますか、それともref:[A、T、ATC、G]のみですか?

于 2012-05-29T19:11:34.960 に答える
1

お返事が大変遅くなり申し訳ありません、あなたが返信した時、私は休暇に出かけていました。次の構文は、目的の結果を実現します。

> db.refs.insert({ref:[A,T,ATC,G]})
> db.refs.insert({ref:['A','T','ATC','G']})

> db.refs.findOne()
{
    "_id" : ObjectId("4fda21bb8a807d87a65aba37"),
    "ref" : [
        "A",
        "T",
        "ATC",
        "G"
    ]
}
> db.refs.insert({ref:['TCG','TA']})
> db.refs.find()
{ "_id" : ObjectId("4fda21bb8a807d87a65aba37"), "ref" : [ "A", "T", "ATC", "G" ] }
{ "_id" : ObjectId("4fda22438a807d87a65aba38"), "ref" : [ "TCG", "TA" ] }


> db.refs.find({ref :{$all : ['G']}})
{ "_id" : ObjectId("4fda21bb8a807d87a65aba37"), "ref" : [ "A", "T", "ATC", "G" ] }

これはあなたが考えていたことですか?

スキーマ設計における大きな懸念事項は、16MB のドキュメント制限を回避することです。64 ビットのアドレス空間で処理できる限り多くのドキュメントを持つことができますが、ドキュメントがどのように大きくなる可能性があるかはわかりません。この制限により、一部のフィールドを参照する他のドキュメントに分割することが必要になる場合があります。

于 2012-06-14T17:53:55.803 に答える