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 回答