【问题标题】:MongoDB $elemMatch on arrayMongoDB $elemMatch 在数组上
【发布时间】:2017-05-28 19:53:30
【问题描述】:

我有这样的文件:

{
  "values": 
    [
      ["a","231"],
      ["b","232"],
      ["c","233"],
      ["a","235"]  
    ]
}

如何在 value 属性上使用$elemMatch。 想要将元素投射到第一个元素是“a”的值中。

类似这样的:

db.test.find({"values" : {$elemMatch: { "matchedElemet"[0]: "a"}}},{"values.$":1})

【问题讨论】:

  • 到目前为止你做了什么?

标签: arrays mongodb mongodb-query


【解决方案1】:

你可以这样使用:

db.test.find(
    {
        'values': {
            $elemMatch: {
                $elemMatch: {
                    $in: ['a']
                }
            }
        }
    },
    {
        "values.$": 1
    }
)

db.test.find(
    {},
    {
        'values': {
            $elemMatch: {
                $elemMatch: {
                    $in: ['a']
                }
            }
        }
    }
)

我希望我正确地满足了您的要求,这会有所帮助。

【讨论】:

  • 如果 a 在数组中排在第二位,那么作为数组的第一个元素,我不想匹配它
  • @SajjadRahnama 你能在应用层做一件事吗?首先仅使用 splice 过滤第一个值: db.test.find({},{'values':{$slice:1}});然后使用上面的查询。这应该可以解决您的问题,直到您找到一个查询
  • 是的,它是在应用层执行此操作的更好解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 2013-11-24
  • 1970-01-01
  • 2021-08-08
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多