Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

in Operador

O operador in na MongoDB Search executa uma pesquisa por uma array de BSON valores number, date, boolean, objectId, uuid ou string no caminho fornecido e retorna documentos onde o valor do campo é igual a qualquer valor na array especificada. Se o campo contiver uma array, o operador in selecionará os documentos cujo campo contém uma array que contenha pelo menos um elemento que corresponda a qualquer valor na array especificada.

O operador in tem a seguinte sintaxe:

{
$search: {
"index": <index name>, // optional, defaults to "default"
"in": {
"path": "<field-to-search>",
"score": <options>,
"value": <single-or-array-of-values-to-search>,
"doesNotAffect": "<facet-to-exclude>" | [<array-of-facets>]
}
}
}
Campo
Tipo
Descrição
necessidade

path

cadeia de caracteres ou matriz de cadeias de caracteres

Campos indexados a serem pesquisados. Você também pode especificar um caminho curinga para pesquisar.

Para pesquisar valores destring em um campo, você deve indexar o campo como o tipo de token MongoDB Search .

Obrigatório

score

objeto

Pontuação para atribuir aos resultados do termo de pesquisa correspondente. Use uma das opções seguintes para modificar a pontuação:

  • boost: multiplique a pontuação do resultado pelo número fornecido.

  • constant: substitui a pontuação do resultado pelo número fornecido.

  • function: substitua a pontuação do resultado usando a expressão de função.

Opcional

value

Valor ou valores a serem pesquisados. O valor pode ser um único valor ou uma array de valores de apenas um dos tipos de BSON suportados e não pode ser uma mistura de tipos diferentes.

Para pesquisar valores de string em um campo, você deve indexar o campo como o tipo de token do MongoDB Search.

Obrigatório

doesNotAffect

cadeia de caracteres ou matriz de cadeias de caracteres

Faceta ou lista de facetas a serem excluídos do novo cálculo de contagem com base nesta query. O valor deve ser um ou mais nomes de uma faceta definidos em $search.facets ou $searchMeta.facets. O operador usa as facetas especificadas para filtrar documentos para corresponder a essa query, mas não recalcula as contagens para eles. Para obter mais informações, consulte Facetas de seleção múltipla.

Opcional

The following examples use the in operator to query collections in the sample_analytics.customers collection. If you load the sample data on your cluster and create a MongoDB Search index named default that uses static mappings on the collection, you can run the following queries against the collections.

A definição do índice de amostra especifica as seguintes ações para oferecer suporte às consultas do operador in nos campos indexados na coleção:

  • Indexe automaticamente todos os campos dinamicamente indexáveis na coleção.

  • Indexe estaticamente o campo name como o tipo de token e converte o texto no campo em letras minúsculas.

{
"mappings": {
"index": "default",
"dynamic": true,
"fields": {
"name": {
"normalizer": "lowercase",
"type": "token"
}
}
}
}

Para saber como criar um índice do MongoDB Search, consulte Gerenciar índices de pesquisa do MongoDB.

A query a seguir usa o operador in para o Atlas Search para o campo birthdate, que contém um único valor, para clientes que nasceram em determinadas datas. A consulta utiliza o estágio $project para:

  • Omita o campo _id nos resultados.

  • Inclua apenas os campos name e birthdate nos resultados.

1db.customers.aggregate([
2 {
3 "$search": {
4 "in": {
5 "path": "birthdate",
6 "value": [ISODate("1977-03-02T02:20:31.000+00:00"), ISODate("1977-03-01T00:00:00.000+00:00"), ISODate("1977-05-06T21:57:35.000+00:00")]
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 0,
13 "name": 1,
14 "birthdate": 1
15 }
16 }
17])
1[
2 {
3 name: 'Elizabeth Ray',
4 birthdate: ISODate("1977-03-02T02:20:31.000Z")
5 },
6 {
7 name: 'Brad Cardenas',
8 birthdate: ISODate("1977-05-06T21:57:35.000Z")
9 }
10]

A pesquisa do MongoDB retorna dois documentos que correspondem às datas especificadas na query.

A query a seguir usa o operador in para consultar o campo accounts , que contém uma array de números, para clientes com números de conta 371138, 371139 ou 371140. A consulta utiliza o estágio $project para:

  • Omita o campo _id nos resultados.

  • Inclua apenas os campos name e accounts nos resultados.

1db.customers.aggregate([
2 {
3 "$search": {
4 "in": {
5 "path": "accounts",
6 "value": [371138, 371139, 371140]
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 0,
13 "name": 1,
14 "accounts": 1
15 }
16 }
17])
1[
2 {
3 name: 'Elizabeth Ray',
4 accounts: [ 371138, 324287, 276528, 332179, 422649, 387979 ]
5 }
6]

A Pesquisa do MongoDB retorna apenas um documento que corresponde ao número de conta 371138 especificado na query.

A query seguinte usa o operador text para consultar os clientes cujo nome é James no campo name . A query especifica a preferência utilizando o operador in para clientes associados com os objectIds fornecidos no campo _id . A query usa o estágio $limit para limitar a saída a 5 resultados, e o estágio $project para:

  • Inclua apenas os campos _id e name nos resultados.

  • Adicione um campo denominado score aos resultados.

1db.customers.aggregate([
2 {
3 "$search": {
4 "compound": {
5 "must": [{
6 "in": {
7 "path": "name",
8 "value": ["james sanchez", "jennifer lawrence"]
9 }
10 }],
11 "should": [{
12 "in": {
13 "path": "_id",
14 "value": [ObjectId("5ca4bbcea2dd94ee58162a72"), ObjectId("5ca4bbcea2dd94ee58162a91")]
15 }
16 }]
17 }
18 }
19 },
20 {
21 "$limit": 5
22 },
23 {
24 "$project": {
25 "_id": 1,
26 "name": 1,
27 "score": { $meta: "searchScore" }
28 }
29 }
30])
1[
2 {
3 _id: ObjectId("5ca4bbcea2dd94ee58162a72"),
4 name: 'James Sanchez',
5 score: 2
6 },
7 {
8 _id: ObjectId("5ca4bbcea2dd94ee58162a71"),
9 name: 'Jennifer Lawrence',
10 score: 1
11 }
12]

A Pesquisa do MongoDB retorna documentos que contêm James Sanchez e Jennifer Lawrence no campo name. O MongoDB Search pontua o documento que contém name: 'James Sanchez' mais alto porque corresponde ao ObjectId especificado na cláusula should.

A seguinte query usa o operador in para pesquisar no campo active, que contém um valor booleano, para clientes que estão ativos. A query retorna o número de clientes ativos cuja data de nascimento cai nos seguintes intervalos:

  • 1970–01–01, incluindo o limite inferior para este bucket

  • 1980-01-01, limite superior exclusivo para o bucket 1970-01-01 e limite inferior inclusivo para este bucket

  • 1990-01-01, limite superior exclusivo para o bucket 1980-01-01 e limite inferior inclusivo para este bucket

  • 2000-01-01, limite superior exclusivo para o bucket 1990-01-01

1db.customers.aggregate([
2 {
3 "$searchMeta": {
4 "facet": {
5 "operator": {
6 "in": {
7 "path": "active",
8 "value": null
9 }
10 },
11 "facets": {
12 "birthdateFacet": {
13 "type": "date",
14 "path": "birthdate",
15 "boundaries": [ISODate("1970-01-01"), ISODate("1980-01-01"), ISODate("1990-01-01"), ISODate("2000-01-01")],
16 "default": "other"
17 }
18 }
19 }
20 }
21 }
22])
[
{
count: { lowerBound: Long('1') },
facet: {
birthdateFacet: {
buckets: [
{
_id: ISODate('1970-01-01T00:00:00.000Z'),
count: Long('1')
},
{
_id: ISODate('1980-01-01T00:00:00.000Z'),
count: Long('0')
},
{
_id: ISODate('1990-01-01T00:00:00.000Z'),
count: Long('0')
}
]
}
}
}
]

Voltar

hasRoot

Nesta página