Definición
$toObjectIdConvierte un valor en un
ObjectId(). Si el valor no se puede convertir a un ObjectId, se$toObjectIdgenera$toObjectIdun error en. Si el valor es nulo o falta, devuelve un valor nulo.$toObjectIdtiene la siguiente sintaxis:{ $toObjectId: <expression> } El toma
$toObjectIdcualquier expresión válida.$toObjectIdes una abreviatura de la siguiente$convertexpresión:{ $convert: { input: <expression>, to: "objectId" } } Tip
Comportamiento
La siguiente tabla enumera los tipos de entrada que se pueden convertir a un ObjectId:
Tipo de entrada | Comportamiento |
|---|---|
String | Devuelve un ObjectId para la string hexadecimal de 24 caracteres. No se puede convertir un valor de cadena que no sea una cadena hexadecimal de longitud 24. |
La siguiente tabla enumera algunos ejemplos de conversión a fecha:
Ejemplo | Resultados |
|---|---|
| ObjectId("5ab9cbfa31c2ab715d42129e") |
| Error |
Ejemplo
Cree una colección orders con los siguientes 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 }, ] )
La siguiente operación de agregación en la colección orders convierte _id en ObjectId antes de ordenar por el 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 ] )
La operación devuelve los siguientes 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") }
Nota
Si la operación de conversión detecta un error, la operación de agregación se detiene y genera un error. Para anular este comportamiento,$convert utilice.