MongoDB aumentará automáticamente
MongoDB no es la misma que las capacidades de SQL para el cultivo de forma automática, _id de MongoDB es de 12 bytes que identifica el sistema genera automáticamente.
Sin embargo, en algunos casos, puede ser necesario para implementar ObjectId característica de crecimiento automático.
Debido a MongoDB no implementa esta característica, se puede programarse para lograr, vamos a lograr crecer en el siguiente campo _id contrarresta automáticamente colección.
colección Usar contadores
Considere la siguiente documentación productos. Esperamos lograr a partir de 1,2,3,4 campo _id a la función de crecimiento n automática.
{ "_id":1, "product_name": "Apple iPhone", "category": "mobiles" }
Para ello, cree un conjunto de contadores, los valores de campo de secuencia automática puede ser largo:
>db.createCollection("counters")
Ahora insertamos los siguientes documentos a los contadores de la colección, el uso como idproducto clave:
{ "_id":"productid", "sequence_value": 0 }
campo sequence_value es una secuencia de valores por el crecimiento automático después.
Utilice la siguiente secuencia de comandos para insertar los contadores de documentos de la colección:
>db.counters.insert({_id:"productid",sequence_value:0})
La creación de la función Javascript
Ahora, creamos la función getNextSequenceValue como un nombre de secuencia de entrada, la secuencia especificada crecerá automáticamente en 1 y devuelve el último valor de secuencia. En el ejemplo de esta serie de artículos llamados idproducto.
>function getNextSequenceValue(sequenceName){ var sequenceDocument = db.counters.findAndModify( { query:{_id: sequenceName }, update: {$inc:{sequence_value:1}}, new:true }); return sequenceDocument.sequence_value; }
Utilice la función de Javascript
A continuación vamos a utilizar la función getNextSequenceValue para crear un nuevo documento y establecer el valor de secuencia automático de documentos _id devuelto es:
>db.products.insert({ "_id":getNextSequenceValue("productid"), "product_name":"Apple iPhone", "category":"mobiles"}) >db.products.insert({ "_id":getNextSequenceValue("productid"), "product_name":"Samsung S3", "category":"mobiles"})
Como se puede comprobar, utilizamos la función getNextSequenceValue para establecer el campo _id.
Con el fin de verificar la eficacia de la función, podemos usar el siguiente comando para leer el documento:
>db.products.find()
El comando anterior devolverá los siguientes resultados, encontramos campo _id es auto-crecimiento:
{ "_id" : 1, "product_name" : "Apple iPhone", "category" : "mobiles"} { "_id" : 2, "product_name" : "Samsung S3", "category" : "mobiles" }