Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

812
Visualizações
Incremento automático de mangosta

De acuerdo con este artículo de mongodb , es posible incrementar automáticamente un campo y me gustaría usar la forma de recopilación de contadores.

El problema con ese ejemplo es que no tengo miles de personas escribiendo los datos en la base de datos usando la consola mongo. En cambio, estoy tratando de usar mangosta.

Así que mi esquema se parece a esto:

 var entitySchema = mongoose.Schema({ testvalue:{type:String,default:function getNextSequence() { console.log('what is this:',mongoose);//this is mongoose var ret = db.counters.findAndModify({ query: { _id:'entityId' }, update: { $inc: { seq: 1 } }, new: true } ); return ret.seq; } } });

Creé la colección de contadores en la misma base de datos y agregué una página con el _id de 'entityId'. A partir de aquí, no estoy seguro de cómo usar mongoose para actualizar esa página y obtener el número incremental.

No hay un esquema para los contadores y me gustaría que siguiera siendo así porque esta no es realmente una entidad utilizada por la aplicación. Solo debe usarse en los esquemas para incrementar automáticamente los campos.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Aquí hay un ejemplo de cómo puede implementar un campo de incremento automático en Mongoose:

 var CounterSchema = Schema({ _id: {type: String, required: true}, seq: { type: Number, default: 0 } }); var counter = mongoose.model('counter', CounterSchema); var entitySchema = mongoose.Schema({ testvalue: {type: String} }); entitySchema.pre('save', function(next) { var doc = this; counter.findByIdAndUpdate({_id: 'entityId'}, {$inc: { seq: 1} }, function(error, counter) { if(error) return next(error); doc.testvalue = counter.seq; next(); }); });
over 4 years ago · Santiago Trujillo Relatório

0

Puede usar el paquete mongoose-auto-increment de la siguiente manera:

 var mongoose = require('mongoose'); var autoIncrement = require('mongoose-auto-increment'); /* connect to your database here */ /* define your CounterSchema here */ autoIncrement.initialize(mongoose.connection); CounterSchema.plugin(autoIncrement.plugin, 'Counter'); var Counter = mongoose.model('Counter', CounterSchema);

Solo necesita inicializar el autoIncrement una vez.

over 4 years ago · Santiago Trujillo Relatório

0

La respuesta más votada no funciona. Esta es la solución:

 var CounterSchema = new mongoose.Schema({ _id: {type: String, required: true}, seq: { type: Number, default: 0 } }); var counter = mongoose.model('counter', CounterSchema); var entitySchema = mongoose.Schema({ sort: {type: String} }); entitySchema.pre('save', function(next) { var doc = this; counter.findByIdAndUpdateAsync({_id: 'entityId'}, {$inc: { seq: 1} }, {new: true, upsert: true}).then(function(count) { console.log("...count: "+JSON.stringify(count)); doc.sort = count.seq; next(); }) .catch(function(error) { console.error("counter error-> : "+error); throw error; }); });

Los parámetros de opciones le dan el resultado de la actualización y crea un nuevo documento si no existe. Puedes consultar aquí el documento oficial.

Y si necesita un índice ordenado, consulte este documento

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda