mongoose 是否可以在MongoDB中对Keys/Fields进行不区分大小写的搜索?使用Typescript

b5buobof  于 11个月前  发布在  Go
关注(0)|答案(1)|浏览(95)

例如,一种方法来处理或检测数据库中的字段“productionYear”与“productionYear”。那么我可以对字段和值进行大小写敏感搜索吗?

xienkqul

xienkqul1#

您可以将$$ROOT文档转换为k-v元组的数组,其中$objectToArray$filter具有$toLower for k(即字段名称). $match with $size> 0以查找至少一个匹配。

db.collection.find({
  $expr: {
    $gt: [
      {
        "$size": {
          "$filter": {
            "input": {
              "$objectToArray": "$$ROOT"
            },
            "as": "kv",
            "cond": {
              "$and": [
                {
                  $eq: [
                    {
                      $toLower: "$$kv.k"
                    },
                    "productionyear"
                  ]
                },
                {
                  $eq: [
                    1,
                    "$$kv.v"
                  ]
                }
              ]
            }
          }
        }
      },
      0
    ]
  }
})

字符串
Mongo Playground
请注意,上述方法可能不会受益于索引。相反,建议将字段名称标准化。

db.collection.update({},
[
  {
    "$set": {
      "productionYear": {
        "$ifNull": [
          "$productionYear",
          "$productionyear"
        ]
      }
    }
  },
  {
    "$unset": "productionyear"
  }
])


Mongo Playground

相关问题