$toObjectId (agregação)
Nesta página
Definição
$toObjectId
Converte um valor em um
ObjectId()
. Se o valor não puder ser convertido em um ObjectId,$toObjectId
apresentará erro. Se o valor for nulo ou estiver ausente,$toObjectId
retornará nulo.$toObjectId
tem a seguinte sintaxe:{ $toObjectId: <expression> } O
$toObjectId
usa qualquer expressãoválida.O
$toObjectId
é uma abreviatura para a seguinte expressão$convert
:{ $convert: { input: <expression>, to: "objectId" } }
Comportamento
A tabela a seguir lista os tipos de entrada que podem ser convertidos para um ObjectId:
Tipo de entrada | Comportamento |
---|---|
String | Retorna um ObjectId para a string hexadecimal de comprimento 24. Não é possível converter um valor de string que não seja uma string hexadecimal de comprimento 24. |
A tabela a seguir lista alguns exemplos de conversão em data:
Exemplo | Resultados |
---|---|
{$toObjectId: "5ab9cbfa31c2ab715d42129e"} | ObjectId("5ab9cbfa31c2ab715d42129e") |
{$toObjectId: "5ab9cbfa31c2ab715d42129"} | Erro |
Exemplo
Crie uma collection orders
com os seguintes documentos:
db.orders.insertMany( [ { _id: "5ab9cbe531c2ab715d42129a", item: "apple", qty: 10 }, { _id: ObjectId("5ab9d0b831c2ab715d4212a8"), item: "pie", qty: 5 }, { _id: ObjectId("5ab9d2d331c2ab715d4212b3"), item: "ice cream", qty: 20 }, { _id: "5ab9e16431c2ab715d4212b4", item: "almonds", qty: 50 }, ] )
A seguinte operação de aggregation na collection orders
converte _id
para ObjectId antes de classificar pelo valor:
// Define stage to add convertedId field with converted _id value idConversionStage = { $addFields: { convertedId: { $toObjectId: "$_id" } } }; // Define stage to sort documents by the converted qty values sortStage = { $sort: { "convertedId": -1 } }; db.orders.aggregate( [ idConversionStage, sortStage ] )
A operação retorna os seguintes documentos:
{ _id: '5ab9e16431c2ab715d4212b4', item: 'almonds', qty: 50, convertedId: ObjectId("5ab9e16431c2ab715d4212b4") }, { _id: ObjectId("5ab9d2d331c2ab715d4212b3"), item: 'ice cream', qty: 20, convertedId: ObjectId("5ab9d2d331c2ab715d4212b3") }, { _id: ObjectId("5ab9d0b831c2ab715d4212a8"), item: 'pie', qty: 5, convertedId: ObjectId("5ab9d0b831c2ab715d4212a8") }, { _id: '5ab9cbe531c2ab715d42129a', item: 'apple', qty: 10, convertedId: ObjectId("5ab9cbe531c2ab715d42129a") }
Observação
Se a operação de conversão encontrar um erro, a operação de aggregation interromperá e exibirá um erro. Para substituir esse comportamento, use $convert
em vez disso.