Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

$querySettings (estágio de agregação )

$querySettings

Novidades na versão 8.0.

Retorna configurações de query adicionadas anteriormente com setQuerySettings. As configurações se aplicam a todo o cluster. O cluster mantém as configurações após o desligamento.

Se você usar vários estágios do pipeline, coloque o $querySettings primeiro no pipeline.

db.aggregate( [
{ $querySettings: { showDebugQueryShape: <boolean> } },
// Add any additional pipeline stages after $querySettings
...
] )

$querySettings usa este campo:

Campo
Tipo
necessidade
Descrição

showDebugQueryShape

booleano

Opcional

Se true, $querySettings retorna uma versão de depuração da saída da forma de query . Você verá um exemplo na próxima seção. Para obter detalhes de saída, consulte Forma de query.

O padrão é false.

Os exemplos a seguir criam uma coleção, adicionam configurações de query e retornam as configurações:

1

Executar:

// Create pizzaOrders collection
db.pizzaOrders.insertMany( [
{ _id: 0, type: "pepperoni", totalNumber: 5,
orderDate: new Date( "2024-01-15T12:00:00Z" ) },
{ _id: 1, type: "cheese", totalNumber: 15,
orderDate: new Date( "2024-01-23T11:12:32Z" ) },
{ _id: 2, type: "vegan", totalNumber: 20,
orderDate: new Date( "2024-03-20T10:01:12Z" ) }
] )
// Create ascending index on orderDate field
db.pizzaOrders.createIndex( { orderDate: 1 } )
// Create ascending index on totalNumber field
db.pizzaOrders.createIndex( { totalNumber: 1 } )

Os índices têm os nomes padrão orderDate_1 e totalNumber_1.

2

O exemplo do setQuerySettings a seguir adiciona configurações de query:

db.adminCommand( {
setQuerySettings: {
find: "pizzaOrders",
filter: {
orderDate: { $gt: ISODate( "2024-01-20T00:00:00Z" ) }
},
sort: {
totalNumber: 1
},
$db: "test"
},
settings: {
indexHints: {
ns: { db: "test", coll: "pizzaOrders" },
allowedIndexes: [ "orderDate_1" ]
},
queryFramework: "classic",
comment: "Index hint for orderDate_1 index to improve query performance"
}
} )

O campo comment está disponível a partir do MongoDB 8.1 (e 8.0.4).

3

O exemplo a seguir utiliza um estágio do $querySettings em um pipeline de agregação para retornar configurações de query:

db.aggregate( [ {
$querySettings: { showDebugQueryShape: true }
} ] )

Como showDebugQueryShape é true, o documento debugQueryShape é incluído na saída. Você pode utilizar o identificador queryShapeHash para localizar as configurações de consulta. queryShapeHash e debugQueryShape estão destacados nesta saída:

[
{
queryShapeHash: 'AB8ECADEE8F0EB0F447A30744EB4813AE7E0BFEF523B0870CA10FCBC87F5D8F1',
settings: {
indexHints: [
{
ns: { db: 'test', coll: 'pizzaOrders' },
allowedIndexes: [ 'orderDate_1' ]
}
],
queryFramework: 'classic',
comment: 'Index hint for orderDate_1 index to improve query performance'
},
representativeQuery: {
find: 'pizzaOrders',
filter: { orderDate: { '$gt': ISODate('2023-01-20T00:00:00.000Z') } },
sort: { totalNumber: 1 },
'$db': 'test'
},
debugQueryShape: {
cmdNs: { db: 'test', coll: 'pizzaOrders' },
command: 'find',
filter: { orderDate: { '$gt': '?date' } },
sort: { totalNumber: 1 }
}
}
]

Os exemplos do Node.js nesta página usam o banco de dados sample_mflix dosconjuntos de dados de exemplo do Atlas. Para saber como criar um cluster gratuito do MongoDB Atlas e carregar os conjuntos de dados de exemplo, consulte Introdução na documentação do driver do MongoDB Node.js

Para usar o driver Node.js do MongoDB para adicionar um estágio $querySettings a um pipeline de agregação , use o operador $querySettings em um objeto de pipeline.

Para usar o estágio $querySettings, você deve primeiro adicionar índices e querySettings à coleção.

O seguinte código insere dois índices na coleção movies:

const year = collection.createIndex({ year: 1 });
const title = collection.createIndex({ title: 1 });

O seguinte código adiciona configurações de query à coleção movies:

const command = {
setQuerySettings: {
find: "movies",
filter: { year: { $gt: 2011 } },
sort: { title: 1 },
$db: "sample_mflix"
},
settings: {
indexHints: {
ns: { db: "sample_mflix", coll: "movies" },
allowedIndexes: [ "year_1" ]
},
queryFramework: "classic",
comment: "Index hint for year_1 index to improve query performance"
}
};
const adminDb = client.db("admin");
const result = adminDb.command(command);

O exemplo a seguir cria um estágio de pipeline que retorna as configurações de query adicionadas anteriormente para a collection movies. O exemplo define a opção showDebugQueryShape como true para incluir o documento debugQueryShape na saída. Em seguida, o exemplo executa o agregação pipeline:

const pipeline = [ { $querySettings: {showDebugQueryShape: true} } ];
const cursor = adminDb.aggregate(pipeline);
return cursor;

Voltar

$project

Nesta página