public int GenerateId(string collection) { MongoIdCollection_v1 idCollection = null; if (!_idCollections.ContainsKey(collection)) { BsonDocument document = GetCollection().zFindOne <BsonDocument>(new QueryDocument { { "collection", collection } }); if (document == null) { if (collection == "IdGenerator") { idCollection = new MongoIdCollection_v1 { id = 1, collection = collection, lastId = 1 } } ; else { idCollection = new MongoIdCollection_v1 { id = GenerateId("IdGenerator"), collection = collection, lastId = 0 } }; } else { idCollection = BsonSerializer.Deserialize <MongoIdCollection_v1>(document); } _idCollections.Add(collection, idCollection); } else { idCollection = _idCollections[collection]; } idCollection.lastId++; // save idCollection GetCollection().zUpdate(new QueryDocument { { "_id", BsonValue.Create(idCollection.id) } }, new UpdateDocument { { "$set", idCollection.zToBsonDocument() } }, UpdateFlags.Upsert); return(idCollection.lastId); }
public int GenerateId(string collection) { MongoIdCollection_v1 idCollection = null; if (!_idCollections.ContainsKey(collection)) { BsonDocument document = GetCollection().zFindOne<BsonDocument>(new QueryDocument { { "collection", collection } }); if (document == null) { if (collection == "IdGenerator") idCollection = new MongoIdCollection_v1 { id = 1, collection = collection, lastId = 1 }; else idCollection = new MongoIdCollection_v1 { id = GenerateId("IdGenerator"), collection = collection, lastId = 0 }; } else idCollection = BsonSerializer.Deserialize<MongoIdCollection_v1>(document); _idCollections.Add(collection, idCollection); } else idCollection = _idCollections[collection]; idCollection.lastId++; // save idCollection GetCollection().zUpdate(new QueryDocument { { "_id", BsonValue.Create(idCollection.id) } }, new UpdateDocument { { "$set", idCollection.zToBsonDocument() } }, UpdateFlags.Upsert); return idCollection.lastId; }