当前位置: 首页 > 知识库问答 >
问题:

mongodb查询中键的通配符

洪飞鸿
2023-03-14

我有一个相当于:

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "sides": {
      "0": {
        "dist": 100
      },
      "1": {
        "dist": 10
      }
    }
  },
  {
    "_id": ObjectId("5a934e000102030405000001"),
    "sides": {
      "0": {
        "dist": 100
      }
    }
  }
]

我希望执行一个查询,返回任何文档,这些文档对于嵌套在sides中的任何键都具有具有特定值的键dist。类似于:

db.collection.find({"sides.*.dist": 10})
[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "sides": {
      "0": {
        "dist": 100
      },
      "1": {
        "dist": 10
      }
    }
  }
]
db.collection.find({"sides.*.dist": 100})

将检索两个文件

共有1个答案

骆磊
2023-03-14

如果sides字段是一个数组,下面的歌舞将不是neccessary...

db.collection.find(
{
    $expr: {
        $gt: [{
            $size: {
                $filter: {
                    input: { $objectToArray: "$sides" },
                    as: "x",
                    cond: { $eq: ["$$x.v.dist", 10] }
                }
            }
        }, 0]
    }
})
 类似资料:
  • 我有一个集合,其中包含具有以下结构的文档: 我想在1个查询中获取存在或等于的所有文档。即与列表中的键匹配的文档。 在MongoDB中有没有办法做到这一点?

  • 所以我对大约500k文档有以下查询,它在数据库端非常慢: 我知道allowDiskUse使它变慢,但如果禁用它,我会得到: MongoError:超过$group的内存限制,但不允许外部排序。通过允许磁盘使用:真来选择加入。

  • 问题内容: 我可以使用简单的通配符查询,如下所示: 但是,如果我想在字段中使用通配符,那又如何呢?应该如何看待有效查询: 问题答案: 您可以使用query_string,它允许使用字段名通配符和查询文本通配符。 这些线周围的东西:

  • 我在MongoDB集合中有一个Json文档,我希望根据_id查询它。

  • 在我的NestJS项目中,我有这个TypeORM查询: 现在我只想返回名称中包含的用户。在SQL中,这将是一个查询。 在https://github.com/typeorm/typeorm/blob/master/docs/find-options.md中,没有关于通配符查询的信息。 如何执行like查询类型ORM给出了一个解决方案: 但是,我无法使用和,后者在使用而不是时可用。 对于如何使用Ty