ventajas tutorial example desventajas descargar caracteristicas mongodb

tutorial - orden de clasificación mongodb en_id



mongodb ventajas y desventajas (3)

De alguna manera estás en lo cierto, si clasificas por _id , ordenarás por el tiempo de inserción. Esto no significa que la única comparación se hace en la porción de la marca de tiempo. Los ObjectID son un tipo de objeto BSON por derecho propio, se pueden comparar directamente entre sí. A medida que comienzan con una marca de tiempo, se deduce lógicamente que aquellos en el pasado serán menores que en el futuro.

Puede encontrar más detalles en la documentation

Me pregunto cómo mongodb compara el campo "_id" cuando hace una consulta como la siguiente:

db.data.find({"_id":{$gt:ObjectId("502aa46c0674d23e3cee6152")}}).sort({"_id":1}).limit(10);

¿Está basado exclusivamente en la porción de la marca de tiempo?


Para ampliar ligeramente lo que Andre dijo:

Dado que la marca de tiempo ObjectID es solo para el segundo, dos (o más) ObjectIDs podrían crearse fácilmente con el mismo valor para la marca de tiempo (los primeros 4 bytes). Si se crearon en la misma máquina (ID de máquina - los siguientes 3 bytes), por el mismo proceso (PID - los siguientes 2 bytes), entonces lo único que los diferenciaría sería el campo "inc", los últimos 3 bytes al final.

Vea aquí para la especificación completa:

https://docs.mongodb.com/manual/reference/method/ObjectId/#ObjectIDs-BSONObjectIDSpecification

Ese campo "inc" es un campo en constante aumento (entonces puede esperar razonablemente que el género esté en el orden de insertar / crear) o un valor aleatorio (entonces probablemente único, pero no ordenado), asumiendo que la especificación se implemente correctamente, por supuesto. . Tenga en cuenta que los ObjectID pueden ser generados por el controlador o la aplicación (o de hecho manualmente) en lugar de por MongoDB, de modo que a menos que tenga un control total sobre cómo se generan, puede aplicarse cualquiera o todo lo anterior.


copiar pegar de las especificaciones de Mongo https://docs.mongodb.com/manual/reference/bson-types/#objectid

La relación entre el orden de los valores de ObjectId y el tiempo de generación no es estricta en un solo segundo . Si múltiples sistemas o múltiples procesos o subprocesos en un solo sistema generan valores, en un solo segundo; Los valores de ObjectId no representan un orden de inserción estricto. El sesgo del reloj entre los clientes también puede dar como resultado un orden no estricto incluso para los valores, ya que los controladores del cliente generan valores de ObjectId, no el proceso de mongod.