例如,一种方法来处理或检测数据库中的字段“productionYear”与“productionYear”。那么我可以对字段和值进行大小写敏感搜索吗?
xienkqul1#
您可以将$$ROOT文档转换为k-v元组的数组,其中$objectToArray和$filter具有$toLower for k(即字段名称). $match with $size> 0以查找至少一个匹配。
$$ROOT
$objectToArray
$filter
$toLower
$match
$size
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的
1条答案
按热度按时间xienkqul1#
您可以将
$$ROOT
文档转换为k-v元组的数组,其中$objectToArray
和$filter
具有$toLower
for k(即字段名称).$match
with$size
> 0以查找至少一个匹配。字符串
Mongo Playground
请注意,上述方法可能不会受益于索引。相反,建议将字段名称标准化。
型
Mongo Playground的