cursor.collation()
Definição
cursor.collation(<collation document>)
Importante
Método mongosh
Esta página documenta um método
mongosh
. Esta não é a documentação de um driver de idioma específico, como Node.js.Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.
Especifica oagrupamento para o cursor retornado pelo
db.collection.find()
. Para usar, acrescente aodb.collection.find()
.O
cursor.collation()
aceita o seguinte documento de agrupamento:{ locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } Ao especificar agrupamento, o campo
locale
é obrigatório; todos os outros campos de agrupamento são opcionais. Para obter descrições dos campos, consulte Documento de agrupamento.CampoTipoDescriçãolocale
stringO local da UTI. Consulte Idiomas e localidades compatíveis para obter uma lista das localidades suportadas.
Para especificar uma comparação binária simples, especifique
locale
valor de"simple"
.strength
inteiroOpcional. O nível de comparação a ser executado. Corresponde aos níveis de comparação da UTI. Os valores possíveis são:
ValorDescrição1Nível primário de comparação. O agrupamento realiza comparação apenas dos caracteres básicos, ignorando outras diferenças, como diacríticos, maiúsculas e minúsculas.2Nível secundário de comparação. O agrupamento realiza comparações até diferenças secundárias, como diacríticos. Ou seja, o agrupamento realiza comparações de caracteres básicos (diferenças primárias) e sinais diacríticos (diferenças secundárias). As diferenças entre caracteres básicos têm precedência sobre diferença secundária.3Nível terciário de comparação. O agrupamento realiza comparações até diferenças terciárias, como variantes de maiúsculas e minúsculas. Ou seja, o agrupamento realiza comparações de caracteres básicos (diferenças primárias), diacríticos (diferenças secundárias) e caso e variantes (diferenças terciárias). Diferenças entre caracteres básicos tem precedência sobre diferenças secundárias, que tem precedência sobre as diferenças terciárias.
Este é o nível padrão.
4Nível quaternário. Limitado para casos de uso específicos para considerar a pontuação quando os níveis 1-3 ignoram a pontuação ou para processar texto em japonês.5Nível idêntico. Limitado para casos de uso específicos do disjuntor tie .Consulte Agrupamento de ICU: Níveis de Comparação para detalhes.
caseLevel
booleanoOpcional. Sinalizador que determina se a comparação de caso deve ser incluída no nível
strength
1
ou2
.Se
true
, inclua comparação de caso; isto é,Quando usado com
strength:1
, o agrupamento compara caracteres básicos e maiúsculas e minúsculas.Quando usado com
strength:2
, o agrupamento compara caracteres básicos, diacríticos (e outras possíveis diferenças secundárias) e maiúsculas e minúsculas.
Se
false
, não inclua comparação de caso no nível1
ou2
. O padrão éfalse
.Para obter mais informações, consulte Agrupamento do ICU: nível de caso.
caseFirst
stringOpcional. Um campo que determina a ordem de classificação das diferenças entre maiúsculas e minúsculas durante comparações de nível terciário.
Os valores possíveis são:
ValorDescrição"superior"As maiúsculas são classificadas antes das minúsculas."inferior"As minúsculas são classificadas antes das maiúsculas."OFF"Valor padrão. Semelhante a"lower"
com pequenas diferenças. Consulte a página https://unicode-org.github.io/icu/userguide/strings/properties.html#customization para ver um detalhamento das diferenças.numericOrdering
booleanoOpcional. Sinalizador que determina se as strings numéricas devem ser comparadas como números ou como strings.
Se
true
, compare como números; ou seja,"10"
é maior que"2"
.Se
false
, compare como strings; ou seja,"10"
é menor que"2"
.O padrão é
false
.alternate
stringOpcional. Campo que determina se o agrupamento deve considerar espaços em branco e pontuação como caracteres base para fins de comparação.
Os valores possíveis são:
ValorDescrição"non-ignorable"
Espaço em branco e pontuação são considerados caracteres básicos."shifted"
Espaço em branco e pontuação não são considerados caracteres base e só se distinguem em níveis de força superiores a 3.Consulte Agrupamento de ICU: Níveis de Comparação para obter mais informações.
O padrão é
"non-ignorable"
.maxVariable
stringOpcional. Campo que determina até quais caracteres são considerados ignoráveis quando
alternate: "shifted"
. Não tem efeito sealternate: "non-ignorable"
Os valores possíveis são:
ValorDescrição"punct"
Tanto os espaços em branco quanto a pontuação são "ignoráveis", ou seja, não são considerados caracteres básicos."space"
Os espaços em branco são "ignoráveis", ou seja, não são considerados caracteres básicos.backwards
booleanoOpcional. Bandeira que determina se as cadeias com sinais diacríticos são classificadas de trás da string, como com alguns pedidos no dicionário francês.
Se
true
, compare de trás para frente.Se
false
, compare de frente para trás.O valor padrão é
false
.normalization
booleanoOpcional. Sinalizador que determina se é necessário verificar se o texto requer normalização e para realizar a normalização. Geralmente, a maioria dos textos não exige esse processamento de normalização.
Se
true
, verifique se está totalmente normalizado e realize normalização para comparar o texto.Se
false
, não verifica.O valor padrão é
false
.Consulte https://unicode-org.github.io/icu/userguide/collation/concepts.html#normalization para obter detalhes.
Exemplos
Considere uma coleção foo
com os seguintes documentos:
{ "_id" : 1, "x" : "a" } { "_id" : 2, "x" : "A" } { "_id" : 3, "x" : "á" }
A seguinte operação especifica um filtro de query de x: "a"
. A operação também inclui uma opção de agrupamento com locale: "en_US"
(localidade em inglês dos EUA) e strength: 1
(comparar somente caracteres básicos; ou seja, ignorar maiúsculas e minúsculas e diacríticos):
db.foo.find( { x: "a" } ).collation( { locale: "en_US", strength: 1 } )
A operação retorna os seguintes documentos:
{ "_id" : 1, "x" : "a" } { "_id" : 2, "x" : "A" } { "_id" : 3, "x" : "á" }
Se você não especificar o agrupamento, ou seja, db.collection.find( { x:
"a" } )
, a query corresponderá somente ao seguinte documento:
db.foo.find( { x: "a" } )
Você pode encadear outros métodos de cursor, como cursor.sort()
e cursor.count()
, a cursor.collation()
:
db.collection.find({...}).collation({...}).sort({...}); db.collection.find({...}).collation({...}).count();
Observação
Você não pode especificar vários agrupamentos para uma operação. Por exemplo, você não pode especificar agrupamentos diferentes por campo ou, se estiver realizando uma busca com uma classificação, não poderá usar um agrupamento para a busca e outro para a classificação.