Цель состоит в том, чтобы реализовать поле счетчика (вид автоинкремента) в некоторой коллекции. Я могу сохранить эту функцию через mongoshell:
> db.system.js.save({
_id: "getValueForNextSequence",
value : function(fieldName){
var sequenceDoc = db.counters.find({sequenceName: fieldName }).toArray()[0];
if (sequenceDoc.sequence > 9998){
sequenceDoc = db.counters.findAndModify({
query:{sequenceName: fieldName },
update: {$set:{sequence:1000}},
new:true
});
}else {
sequenceDoc = db.counters.findAndModify({
query:{sequenceName: fieldName },
update: {$inc:{sequence:1}},
new:true
});
}
return sequenceDoc.sequence;
}
})
У меня есть коллекция counters
, где я храню данные для getValueForNextSequence
:
{fieldName: "shotID" , sequence : 0 }
и затем назовите его (снова из оболочки):
db.loadServerScripts()
> db.STORE.insert({
... "shortID":getValueForNextSequence("shortID"),
... "item_short_name": "DEF",
... "specification": "book",
... "category": "fictional",
... "seller": "best_buy",
... "network": "XYZ",
... "plan": "regular"
... })
WriteResult({ "nInserted" : 1 })
Но я не могу понять, как я могу сделать то же самое с официальным драйвером go -mon go.