首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB:数组上的查询浮动范围

MongoDB:数组上的查询浮动范围
EN

Stack Overflow用户
提问于 2013-10-15 11:24:47
回答 1查看 1.6K关注 0票数 2

我面临着一种奇怪的行为: mongo-shell和Spring数据- Mongodb。

下面是我的示例查询:

代码语言:javascript
复制
> db.substances.find({"precursor.mass": {$gte:159.9900,$lte:160.0100}}).count()
6

所以我想在给定的范围内找到质量值(加/减)。在本例中,输入为160 +/- 0.01。

以下是六项结果中的两项。第一个没有问题,但我无法解释和理解为什么第二个结果会被发现。

代码语言:javascript
复制
{
"_id" : ObjectId("524bfe80729458abfd7698a5"),
"exactMass" : 159.1259,
"nominalMass" : 159,
"molarMass" : 159.22,
"status" : 1,
"decompositions" : [ ],
"precursor" : [
    {
        "mass" : 160,
        "ion" : "+H",
        "charge" : "+",
        "fragments" : [
            55,
            83,
            124,
            97,
            69,
            142
        ]
    }
],
}

{
"_id" : ObjectId("524bfe80729458abfd7695be"),
"exactMass" : 159.068414,
"nominalMass" : 159,
"molarMass" : 159.19,
"status" : 0,
"decompositions" : [ ],
"precursor" : [
    {
        "mass" : 158.0611,
        "ion" : "-H",
        "charge" : "-",
        "fragments" : [ ]
    },
    {
        "mass" : 160.0756,
        "ion" : "+H",
        "charge" : "+",
        "fragments" : [ ]
    }
],
}

我在看什么?我想我使用了一个错误的查询?

我的目标是找到所有物质,其中任何precursor.mass之间的一个给定的值+/- a的耐受性。

EN

回答 1

Stack Overflow用户

发布于 2013-10-15 11:43:08

来自mongo on find()

如果一个字段包含一个数组,并且您的查询有多个条件运算符,则如果单个数组元素满足条件或数组元素组合满足条件,则该字段作为一个整体将匹配。

因此,由于{"mass" : 158.0611}匹配第二个查询条件(小于160.0100),而{"mass" : 160.0756}匹配第一个查询条件(大于159.9900),所以整个数组匹配。

你要找的是$elemMatch

代码语言:javascript
复制
db.substances.find({
  "precursor": { 
    $elemMatch: {
      mass: { $gt:159.9900, $lt:160.0100 }
    }
  }
}).pretty()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19380044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档