【问题标题】:MongoDB. Query for array in SubdocumentMongoDB。查询子文档中的数组
【发布时间】:2013-10-01 18:29:18
【问题描述】:

我是 mongodb 的新手,所以如果我使用了错误的术语,请纠正我:

我有以下文件(摘录)

{
    "_id" : ObjectId("524b0a1a7294ec8a39d4230f"),
    "name" : "Irbesartan",
    "decompositions" : [
            "IRB_444",
            "IRB_442",
            "IRB_446",
            "Valsartan acid"
    ],
    "precursor" : [
            {
                    "mass" : 429,
                    "ion" : "+H",
                    "charge" : "+",
                    "fragments" : [
                            207,
                            195,
                            180
                    ]
            },
            {
                    "mass" : 427.2252,
                    "ion" : "-H",
                    "charge" : "-",
                    "fragments" : [
                            193,
                            399
                    ]
            }
    ]
}

db.substances.findOne({name: "Irbesartan"}).precursor

我得到以下信息

[
    {
            "mass" : 429,
            "ion" : "+H",
            "charge" : "+",
            "fragments" : [
                    207,
                    195,
                    180
            ]
    },
    {
            "mass" : 427.2252,
            "ion" : "-H",
            "charge" : "-",
            "fragments" : [
                    193,
                    399
            ]
    }
]

但我想访问里面的字段,尤其是片段数组(使用 Mongo Shell)

这可以在一个查询中实现吗?

或者将前体存储为数组而不是子文档更好?

【问题讨论】:

    标签: javascript arrays mongodb


    【解决方案1】:

    例如查询

    db.substances.distinct("precursor.fragments", {name: "Irbesartan"})
    

    给予:

    [ 180, 193, 195, 207, 399 ]
    

    db.substances.findOne({name: "Irbesartan"}).precursor.map(function(r) {
      return r.fragments;
    })
    

    给予

    [ [ 207, 195, 180 ], [ 193, 399 ] ]
    

    【讨论】:

    • 谢谢,我明天试试。这可能是 db.substances.distinct("precursor.mass", {name: "Irbesartan"}) 吗?
    • 是的,当然。很高兴我能帮上忙。
    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多