Menu Docs
Página inicial do Docs
/ /

Configurar operações CRUD

Neste guia, você pode aprender como usar as configurações de referência de escrita, referência de leitura e preferência de leitura para modificar a maneira como o MongoDB executa as operações de criação, leitura, atualização e exclusão (CRUD) em conjuntos de réplicas.

Você pode definir essas configurações nos seguintes níveis:

  1. Cliente, que define o padrão para todas as execuções de operações, a menos que sejam substituídas

  2. transação

  3. Database

  4. collection

A lista anterior está em ordem crescente de precedência. Por exemplo, se você definir read concerns nos níveis de cliente e banco de dados de dados, a preocupação de leitura especificada no nível do banco de dados de dados substituirá a preocupação de leitura no nível do cliente .

A preocupação com a gravação especifica o nível de confirmação solicitado ao MongoDB para operações de gravação antes que a operação retorne com êxito. As operações que não especificam uma preocupação de gravação explícita herdam a configuração global padrão de preocupação de gravação .

Você pode definir a preocupação de gravação chamando as seguintes funções:

  • mongoc_client_set_write_concern() define a preocupação de gravação em um cliente.

  • mongoc_transaction_opts_set_write_concern() define a preocupação de gravação em uma transação.

  • mongoc_database_set_write_concern() define a preocupação de gravação em um banco de dados.

  • mongoc_collection_set_write_concern() define a preocupação de gravação em uma coleção.

Para especificar o nível da preocupação de gravação, chame a função mongoc_write_concern_set_w() e passe a preocupação de gravação e um dos seguintes valores:

  • MONGOC_WRITE_CONCERN_W_DEFAULT: a operação de gravação retorna depois que a operação é gravada na memória.

  • 0: A operação de gravação retorna após o nó primário processar a operação de gravação.

  • 1: A operação de gravação retorna depois que apenas o nó primário reconhece a operação de gravação, sem esperar pela confirmação dos nós secundários.

  • MONGOC_WRITE_CONCERN_W_MAJORITY: A operação de gravação retorna após a maioria dos membros do conjunto de réplica reconhecer a operação de gravação.

  • MONGOC_WRITE_CONCERN_W_TAG: A operação de gravação retorna após o membro do conjunto de réplicas com a tag especificada reconhecer a operação de gravação.

O exemplo a seguir define a preocupação de gravação como MONGOC_WRITE_CONCERN_W_MAJORITY para uma instância de mongoc_client_t:

// Create a new client instance
mongoc_client_t *client = mongoc_client_new("<connection string>");
// Create a new write concern
mongoc_write_concern_t *write_concern = mongoc_write_concern_new();
mongoc_write_concern_set_w(write_concern, MONGOC_WRITE_CONCERN_W_MAJORITY);
// Set the write concern on the client
mongoc_client_set_write_concern(client, write_concern);

O exemplo a seguir define a preocupação de gravação como MONGOC_WRITE_CONCERN_W_MAJORITY para uma collection:

mongoc_collection_t *collection = mongoc_client_get_collection(client, "<database name>", "<collection name>");
// Create a new write concern
mongoc_write_concern_t *write_concern = mongoc_write_concern_new();
mongoc_write_concern_set_w(write_concern, MONGOC_WRITE_CONCERN_W_MAJORITY);
// Set the write concern on the collection
mongoc_collection_set_write_concern(collection, write_concern);

Observação

Collections e bancos de dados são imutáveis

mongoc_database_t e mongoc_collection_t instâncias são imutáveis. Quando você define a preocupação de gravação em um banco de dados de dados ou em uma collection, o método retorna uma nova instância e não afeta a instância original.

Para obter mais informações sobre preocupação de gravação, consulte Write Concern no manual do MongoDB Server .

A read concern especifica os seguintes comportamentos:

Você pode especificar o preocupação de leitura chamando as seguintes funções:

  • mongoc_client_set_read_concern() define a preocupação de leitura em um cliente.

  • mongoc_transaction_opts_set_read_concern() define a preocupação de leitura em uma transação.

  • mongoc_database_set_read_concern() define a preocupação de leitura em um banco de dados.

  • mongoc_collection_set_read_concern() define a preocupação de leitura em uma coleção.

Para especificar o nível do seu preocupação de leitura, chame a função mongoc_read_concern_set_level() e passe o preocupação de leitura e um dos seguintes valores:

  • MONGOC_READ_CONCERN_LEVEL_LOCAL: a query retorna os dados mais recentes da instância. Não garante que os dados tenham sido gravados para a maioria dos membros do conjunto de réplicas.

  • MONGOC_READ_CONCERN_LEVEL_AVAILABLE: a query retorna os dados mais recentes da instância. Não garante que os dados tenham sido gravados para a maioria dos membros do conjunto de réplicas. ReadConcern.AVAILABLE não está disponível para uso com sessões e transações causalmente consistentes.

  • MONGOC_READ_CONCERN_LEVEL_MAJORITY: a query retorna dados que foram confirmados por uma maioria dos membros do conjunto de réplicas.

  • MONGOC_READ_CONCERN_LEVEL_LINEARIZABLE: a query retorna dados que refletem todas as gravações bem-sucedidas concluídas antes do início da operação de leitura. MONGOC_READ_CONCERN_LEVEL_LINEARIZABLE não está disponível para uso com sessões e transações causalmente consistentes.

  • MONGOC_READ_CONCERN_LEVEL_SNAPSHOT: a query retorna dados comprometidos pela maioria como aparece nos fragmentos, a partir de um único ponto específico no passado recente.

Para obter mais informações sobre os níveis de preocupação de leitura , consulte Níveis de read concern no manual do MongoDB Server .

O exemplo a seguir define o preocupação de leitura como MONGOC_READ_CONCERN_LEVEL_MAJORITY para uma instância de mongoc_client_t:

mongoc_client_t *client = mongoc_client_new("<connection string>");
// Create a new read concern
mongoc_read_concern_t *read_concern = mongoc_read_concern_new();
// Set the read concern level
mongoc_read_concern_set_level(read_concern, MONGOC_READ_CONCERN_LEVEL_MAJORITY);
// Set the read concern on the client
mongoc_client_set_read_concern(client, read_concern);

O exemplo a seguir define o preocupação de leitura como MONGOC_READ_CONCERN_LEVEL_MAJORITY para uma collection:

mongoc_collection_t *collection = mongoc_client_get_collection(client, "<database name>", "<collection name>");
// Create a new read concern
mongoc_read_concern_t *read_concern = mongoc_read_concern_new();
// Set the read concern level
mongoc_read_concern_set_level(read_concern, MONGOC_READ_CONCERN_LEVEL_MAJORITY);
// Set the read concern on the collection
mongoc_collection_set_read_concern(collection, read_concern);

Para saber mais sobre preocupação de leitura, consulte Read Concern no manual do MongoDB Server .

A preferência de leitura determina qual membro de um conjunto de réplicas o MongoDB lê ao executar uma query. Você pode definir a preferência de leitura chamando as seguintes funções:

  • mongoc_client_set_read_prefs() define a preferência de leitura em um cliente.

  • mongoc_transaction_opts_set_read_prefs() define a preferência de leitura em uma transação.

  • mongoc_database_set_read_prefs() define a preferência de leitura em um banco de dados.

  • mongoc_collection_set_read_prefs() define a preferência de leitura em uma collection.

Para especificar o nível da sua preferência de leitura, chame a função mongoc_read_prefs_new() e passe um dos seguintes valores:

  • MONGOC_READ_PRIMARY: a query retorna dados do nó primário.

  • MONGOC_READ_PRIMARY_PREFERRED: a query retorna dados do nó primário, se disponíveis. Caso contrário, a query retornará dados de um nó secundário.

  • MONGOC_READ_SECONDARY: a query retorna dados de um nó secundário.

  • MONGOC_READ_SECONDARY_PREFERRED: A query retorna dados de um nó secundário, se disponíveis. Caso contrário, a query retorna dados do nó primary.

  • MONGOC_READ_NEAREST: a query retorna dados do nó com a menor latência de rede.

O exemplo a seguir define a preferência de leitura MONGOC_READ_SECONDARY para uma instância de mongoc_client_t:

mongoc_client_t *client = mongoc_client_new("<connection string>");
// Create a new read preference
mongoc_read_prefs_t *read_prefs = mongoc_read_prefs_new(MONGOC_READ_SECONDARY);
// Set the read preference on the client
mongoc_client_set_read_prefs(client, read_prefs);

O exemplo a seguir define a preferência de leitura MONGOC_READ_SECONDARY para uma collection:

mongoc_collection_t *collection = mongoc_client_get_collection(client, "<database name>", "<collection name>");
// Create a new read preference
mongoc_read_prefs_t *read_prefs = mongoc_read_prefs_new(MONGOC_READ_SECONDARY);
// Set the read preference on the collection
mongoc_collection_set_read_prefs(collection, read_prefs);

Para obter mais informações sobre a preferência de leitura, consulte Read preference no manual do MongoDB Server .

Você pode especificar um agrupamento ao executar operações de leitura e gravação em uma coleção.

Um agrupamento é um conjunto de regras específicas do idioma para comparação de cadeias de caracteres, como para letras maiúsculas e minúsculas e acentos.

Para especificar um agrupamento, passe a definição de agrupamento para a chave "collation" nas opções da operação de leitura ou gravação.

Considere uma collection com os seguintes documentos:

{ _id: 1, category: "café" },
{ _id: 2, category: "cafe" },
{ _id: 3, category: "cafE" }

O exemplo a seguir cria um agrupamento que especifica a locale francês e ignora as diferenças entre variantes de maiúsculas e minúsculas. Em seguida, ele usa esse agrupamento para encontrar documentos nos quais o valor de campo category corresponde a "cafe". Devido ao agrupamento especificado, a query retorna todos os três documentos.

mongoc_collection_t *collection = mongoc_client_get_collection(client, "<database name>", "<collection name>");
bson_t *opts = BCON_NEW(
"collation", "{",
"locale", BCON_UTF8("fr"),
"strength", BCON_INT32(1),
"}"
);
mongoc_cursor_t *cursor = mongoc_collection_find_with_opts(
collection,
BCON_NEW("category", BCON_UTF8("cafe")),
opts,
NULL
);
const bson_t *doc;
while (mongoc_cursor_next(cursor, &doc))
{
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
{ "_id": { "$oid" : "1" }, "category": "café" }
{ "_id": { "$oid" : "2" }, "category": "cafe" }
{ "_id": { "$oid" : "3" }, "category": "cafE" }

Para saber mais sobre agrupamento, consulte a documentação de referência de Agrupamento no manual do MongoDB Server .

Para saber mais sobre qualquer uma das funções ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Transações

Nesta página