【发布时间】:2015-10-01 17:24:07
【问题描述】:
这是 JSON 结构,注意最后一个条目有 2 个多维数组,一个用于 chr 10,一个用于 chr 12:
{
"_id": "9oFvJYeG9wpdBYunu",
"segments": [
{
"chr": "7",
"start": "140422294",
"end": "155048283",
"length": "29.1",
"snps": "1666"
}
]
},
{
"_id": "HK4WXc5mR6fyesjpP",
"segments": [
{
"chr": "10",
"start": "83865742",
"end": "90981118",
"length": "6.3",
"snps": "1380"
}
]
},
{
"_id": "3N4Z2dtX5PiuqmCFv",
"segments": [
{
"chr": "10",
"start": "83865742",
"end": "90981118",
"length": "6.3",
"snps": "1380"
},
{
"chr": "12",
"start": "32853998",
"end": "44834540",
"length": "5.1",
"snps": "1623"
}
]
}
如何识别所有 chr = 10 的段?我想获取有关 chr = 10 的元素的详细信息。我想要那些 chr = 10 的元素,而不是给我其中一个元素具有 chr = 10 的所有文档(及其所有其他段)。
请进一步注意,根据 MongoDB 文档,“$elemMatch”和“$”都只返回第一个匹配项。但是,我的集合有文档,其中有两个或多个 chr = 10 的元素。我想获取所有元素,在这种情况下,一个数组中有多个 chr 10 元素。
我要返回以下字段:
_id, chr, start, end, length, snps
返回。我如何在 Meteor 中查询这个?我试过$elemMatch 和$in 但无济于事。如果您只为 MongoDB 回答这个问题,请这样做,我会尝试将其转换为 Meteor Javascript。
提前感谢您的帮助!
P.S.:这是在 Meteor 服务器端,不确定是否重要
【问题讨论】:
-
所以你不想
db.coll.find({segments: {$elemMatch: {chr: "10"}}})? -
原则上我想要这个,但如果文档有多个元素,它也会返回所有其他元素。我想要那些 chr = 10 的元素,而不是给我其中一个元素具有 chr = 10 的所有文档。对不起,应该更清楚。
标签: javascript arrays mongodb meteor multidimensional-array