gpt4 book ai didi

mongodb - 如何在不区分大小写的情况下索引 mongodb 中的用户名?

转载 作者:行者123 更新时间:2023-12-04 20:38:03 26 4
gpt4 key购买 nike

我正在编写一个网络服务,用户可以在其中选择一个不区分大小写的唯一用户名。但是我想允许他们使用区分大小写的用户名版本。

在插入时检查用户名没有不区分大小写的重复项的最佳方法是什么?我目前看到有两种方法可以做到这一点:

  • 使用用户输入的大小写同时存储小写版本和另一个版本,并且仅索引小写版本
  • 仅存储用户输入的大小写的版本并将其小写以进行比较,这违背了我认为索引的目的

  • 有没有更好的办法?

    最佳答案

    MongoDB 3.4 现在包括创建真正的不区分大小写索引的能力。它是通过指定强度为 2 的排序规则来实现的。

    可能最简单的方法是在数据库本身上设置排序规则。然后所有查询都继承该排序规则并使用它:

    db.createCollection("cities", { collation: { locale: 'en_US', strength: 2 } } )
    db.cities.createIndex( { city: 1 } ) // inherits the default collation
    db.cities.find({city:"new york"}) //inherits default collation

    或者您可以逐个索引地执行此操作:
    db.myCollection.createIndex({city: 1}, {collation: {locale: "en", strength: 2}});

    并像这样使用它:
    db.myCollection.find({city: "new york"}).collation({locale: "en", strength: 2});

    更多信息: https://jira.mongodb.org/browse/SERVER-90

    关于mongodb - 如何在不区分大小写的情况下索引 mongodb 中的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865770/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com