我的样本文档是

[
  {
    "id": 1234,
    "close": "11100",
    "products": [
      {
        "productId": 111
      }
    ]
  },
  {
    "id": 1235,
    "close": "10101",
    "products": [
      {
        "productId": 111
      }
    ]
  }
]

我只想在‘Close’字段second char为0的情况下获取文档

注意:字符的索引是动态的

预期输出:

{
        "id": 1235,
        "close": "10101",
        "products": [
          {
            "productId": 111
          }
        ]
      }

有没有办法在匹配阶段过滤文档?

这是一个样本docmongoplayground

我在$PROJECT阶段try 过这种聚合,但我想在$Match阶段对其进行过滤.谢谢

close: {
    $not: {
      $regex: {
        $substr: ["$close", 2, 1],

        regex: "[1]",
      },
    },
  }

推荐答案

$regex个操作员合作

^—开始

.—任何角色

这将使文档与第二个字符中包含‘0’的close字段相匹配.

db.collection.aggregate([
  {
    "$match": {
      close: {
        $regex: "^.0"
      }
    }
  }
])

Demo @ Mongo Playground

因此,如果您正在寻找一个动态的指数位置:

^.{index position -1}0

例如,如果您正在寻找第二个字符,则正则表达式模式将为:^.{1}0.

Mongodb相关问答推荐

在MongoDB中使用explain()和查询时缺少winningPlan''''

如何使用MongoDB对子文档进行条件投影?

Mongo DB-如果一个特定字段有多个文档匹配,则更新文档字段

在数组对象 Mongodb 中仅 Select 需要的数组

为什么 mongoose 在 mongodb 中找不到我的数据

如何在MongoDB中搜索有序子集的方法?

有没有一种方法可以找到一个文档并通过 Go 更改 mongodb 中的 id/value 来克隆它

$lookup 的参数必须是字符串

子文档上的mongoose唯一索引

具有最佳插入/秒性能的数据库?

从 MongoDB find() 结果集中识别最后一个文档

mongodb - 查找具有最接近整数值的文档

spring-data-mongo - 可选查询参数?

在 Mongoose 中填写所有必填字段

mongodb nodejs - 转换圆形 struct

如何为 node.js 中的 MongoDB 索引指定 javascript 对象中的属性顺序?

我如何使用 Twitter 的流 api 中的推文并将它们存储在 mongodb 中

使用 $in 进行不区分大小写的搜索

使用 Mongoose ORM 的杀手锏是什么?

有没有办法防止 MongoDB 向集合名称添加复数形式?