Cuando uso Mongodb con Java, quiero generar ID de objeto en clientes. Sin embargo, antes de insertar un registro, primero tengo que consultar mongodb para asegurarme de que el ID generado por el método ObjectId() sea único. ¿Hay alguna manera de que pueda generar una identificación de objeto única sin acceder a mongodb dos veces?Cómo generar ID de objeto único en mongodb
Respuesta
Los identificadores de objetos no son como los identificadores secuenciales que utiliza en un RDMS. Si se generan correctamente según el Object ID specification, no tendrá que preocuparse de que sean únicos.
Todo lo que tiene que hacer es asegurarse de crear siempre una nueva ID de objeto en lugar de reutilizarlos.
Puede generar ObjectId en el cliente sin consultar la base de datos. Dicha identificación será única (tendrá que intentar con todas sus fuerzas obtener dos ID de objeto idénticos).
ObjectId id = new ObjectId();
// or this
ObjectId id = ObjectId.get();
Hay una diferencia entre esas dos formas? vivas – DanielPanic
Sin diferencia. ObjectId # get solo llama al constructor. –
¿Cómo funciona esto? es este javascript? – Jennifer
A partir de MongoDB Java Driver 3.3.0, existen las siguientes formas de crear ObjectIds.
usando el constructor sin parámetros:Proporciona OBJECTID única
1. ObjectId id1 = new ObjectId(); //Generates unique id
1.1. ObjectId id2 = ObjectId.get(); //Calls new ObjectId();
Utilizando los constructores parametrizados:parámetros influyen en la singularidad de la OBJECTID
2. public ObjectId(byte[] bytes) // Receives a byte array of size 12.
3. public ObjectId(String hexString) //Receives a String that is a hexadecimal representation of 12 bytes.
4. public ObjectId(Date date) // Receives a Date object
5. public ObjectId(Date date, int counter) //Receives date and a counter
6. public ObjectId(Date date,
int machineIdentifier,
short processIdentifier,
int counter) //Receives Date, MachineId, PID and counter.
7. public ObjectId(int timestamp,
int machineIdentifier,
short processIdentifier,
int counter) //Receives Epoch time in sec, MachineId, PID and counter.
entendimiento objetivación d:
OBJECTID consta de 12 bytes, según la siguiente distribución:
ObjectID layout
0 1 2 3 4 5 6 7 8 9 10 11
|time |machine |pid |inc |
- 1. Generar ID único
- 2. CÓMO buscar por ID de objeto en MongoDB con Casbah?
- 3. ¿cómo obtengo un ID único por objeto en Java?
- 4. Creación de ID de objeto personalizado en MongoDB
- 5. Generar ID único a partir de la cadena alfanumérica
- 6. JavaScript ID de navegador único
- 7. ID único en NSViews
- 8. Cómo asignar ID de elemento DOM único
- 9. ID únicos con mongodb
- 10. MongoDB: salida 'id' en lugar de '_id'
- 11. ID de contacto único
- 12. Cómo generar un campo de ID único en el módulo en sugarcrm
- 13. ID único del sistema en Ruby ...?
- 14. ¿Cómo generar un alfanumérico único?
- 15. Mongodb campo único de configuración
- 16. UDID de dispositivo Android o ID único?
- 17. Generar fáciles de usar identificadores en MongoDB
- 18. JavaScript Id de objeto
- 19. ¿Se pueden adivinar los id de MongoDB?
- 20. Rails asociación polimórfica sin Tipo (ID único)
- 21. Hardware de ID de computadora único basado en Java
- 22. ID único para cada usuario en Android
- 23. ID único de la aplicación de Android
- 24. ID de token de Paypal Único?
- 25. Id. De objeto autoincrementado en datos centrales
- 26. ID de hardware único en Mac OS X
- 27. MongoDB - índice único vs índice compuesto
- 28. Pregunto: ¿MongoDB _id es único por defecto?
- 29. Insertar objeto python en mongodb
- 30. ¿Cómo generar una ID de solicitud única en Rails?
Por lo tanto, si genero el ID por: Id. De Id. De objeto = Id. De Objeto nuevo(); entonces la identificación debe ser única ya? Gracias – NOrder
@vienna Correcto. Solo tiene que asegurarse de llamarlo cada vez que guarde un registro en la base de datos. –