Gerar Valores Personalizados para _id
Visão geral
Neste guia, você pode aprender como utilizar o driver MongoDB Node.js para gerar seus próprios valores do _id
utilizando a fábrica de chave primária.
A fábrica de chaves primárias permite que você crie identificadores exclusivos em seus documentos quando optar por não especificar um _id
durante uma operação de inserção. A fábrica de chaves primárias padrão gera valores ObjectId
.
Observação
Operações upsert
O driver não usa a fábrica de chaves primárias para operações de upsert porque não consegue determinar se deve aplicar a fábrica de chaves primárias. Se você tiver especificado a fábrica de chaves primárias em uma operação de upsert e ela executar uma operação de inserção, o servidor gerará automaticamente um ObjectId
para esse documento.
Se você quiser usar a fábrica de chaves primárias especificada, execute uma operação de localização e, em seguida, uma operação de atualização ou inserção.
Especifique uma fábrica de chaves primárias
Para especificar um factory de primary, aplique a opção pkFactory
à sua instância MongoClient
.
O seguinte trecho de código aplica a opção pkFactory
para gerar valores _id
do tipo uuid
:
const { UUID } = require('bson'); ... const client = new MongoClient(uri, { pkFactory: { createPk: () => new UUID().toBinary() } });
Observação
Consistência de dados
Se você inserir um documento com um campo _id
com um tipo diferente do tipo especificado pela fábrica da chave primária, você terá dados inconsistentes.
Por exemplo, se você executar a seguinte operação de inserção em uma fábrica de chave primária que gera tipos de uuid
, seus valores _id
conterão os tipos uuid
e string
:
collection.insertOne({ _id: "user1388", ... });
Informações adicionais
Para saber mais sobre os tipos, interfaces e classes discutidos nesta seção, consulte os seguintes recursos: