Я создал базовую коллекцию c счетчиков с валидатором. Я также поставил метод для его вызова. В методе у меня есть функция findAndModify для обновления последовательности. Когда я вызываю его, он не проходит валидатор, только если я изменяю его уровень на MODERATE. В чем здесь проблема?
Это моя схема валидатора.
db.createCollection('counter', {
validator: {
$jsonSchema: {
bsonType: 'object',
required: ['sequence_value'],
properties: {
sequence_value: {
bsonType: 'int'
}
}
}
}
});
Это функция автообновления.
function getValueForNextSequence(sequenceOfName) {
var sequenceDoc = db.counter.findAndModify({
query: { _id: sequenceOfName },
update: { $inc: { sequence_value: 1 } },
new: true
});
return sequenceDoc.sequence_value;
}
Это команда оболочки, которую я вставил, чтобы вызвать ее.
db.user.insert({
_id: getValueForNextSequence("user_id"),
name: "Heggo",
surname: "Ruffo",
phone: "5879885858",
roles: ["Logistic"],
password: "d1e8a70b5ccab1dc2f56bbf7e99f064a660c08e361a35751b9c483c88943d082"
})
И журнал вывода ...
2020-03-09T13:12:48.559+0300 E QUERY [js] Error: findAndModifyFailed failed: {
"ok" : 0,
"errmsg" : "Document failed validation",
"code" : 121,
"codeName" : "DocumentValidationFailure"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DBCollection.prototype.findAndModify@src/mongo/shell/collection.js:736:1
getValueForNextSequence@(shell):2:23
@(shell):1:1