Menu Docs
Página inicial do Docs
/
Atlas
/ / / /

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>
}
}
}
Campo
Tipo
Descrição
necessidade

path

string

Campo indexado para pesquisar. 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

Os exemplos seguintes utilizam o operador in para consultar collections na collection sample_analytics.customers. Se você carregar os dados de amostra em seu cluster e criar um índice do MongoDB Search chamado default que usa mapeamentos estáticos na coleção, poderá executar as seguintes queries nas coleções.

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

GeoWithin

Nesta página