【问题标题】:Query for documents where array size inside array is greater than 1查询数组内数组大小大于 1 的文档
【发布时间】:2021-02-10 05:25:31
【问题描述】:

我正在尝试查找是否存在任何文档并且大小是否超过一个列表,该列表位于 Mongo 的其他两个列表中。

这就是我的收藏的样子:

{
    "value": {
        "items": [
            {
                "docs": [
                    {
                        "numbers": [
                            1,
                            2
                        ]
                    },
                    {
                        "numbers": [
                            1
                        ]
                    }
                ]
            }
        ]
    }
}

我尝试使用此查询但它不起作用:

db.getCollection('MyCollection').find({"value.items.docs.numbers":{ $exists: true, $gt: {$size: 1} }})

如果列表列表中存在多个项目,那么理想的搜索查询应该是什么。

【问题讨论】:

  • 问题不清楚,你要找的是mongoplayground.net/p/3MbIQpD_9FE吗?
  • @varman 它正在检查 numbers 字段内的值的条件,请参阅此 playground 不会返回任何内容,因为 numbers 字段内的所有值都小于 1。
  • 您认为提供的答案中是否有某些内容无法解决您的问题?如果是这样,那么请对答案发表评论,以澄清究竟需要解决哪些尚未解决的问题。如果它确实回答了您提出的问题,请注意接受您对您提出的问题的回答

标签: database mongodb collections mongodb-query nosql


【解决方案1】:
  • 您正在检查嵌套数组中的条件,因为嵌套的 $elemMatch 条件将有助于检查条件
  • $size 只允许输入数字,因此 $not 将有助于否定条件
  • $ne 检查数组大小不应该 [] 为空
db.getCollection('MyCollection').find({
  "value.items": {
    $elemMatch: {
      docs: {
        $elemMatch: {
          numbers: {
            $exists: true,
            $ne: [],
            $not: {
              $size: 1
            }
          }
        }
      }
    }
  }
})

Playground

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2020-12-12
    • 2011-10-07
    • 2021-12-28
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多