Как создать случайный unice-идентификатор mongoDb - PullRequest
0 голосов
/ 08 мая 2020

для моего последнего проекта, я делаю простое приложение Manager для гаражей ремонта автомобилей, для DB я использую MongoDB, и я видел отличный учебник от Тима банально, но я не знаю, как сгенерировать идентификатор Unice для каждого объекта.

это мой класс Действия для каждого объекта в базе данных

public class MongoActions
    {
        private static Random random;
        public static void UpsertRecord<T>(int id, string table, T record)
        {
            var collection =  Mongo.db.GetCollection<T>(table);
            var result = collection.ReplaceOne(
                new BsonDocument("_id", id),
                record,
                new UpdateOptions { IsUpsert = true }
                );
        }
        public static int RandomId<T>(string table)
        {
            **//how to find a nice Id that is not repeated** 


        }   

        public static void  InsertRecord<T>(string table, T record)
        {
            var collection = Mongo.db.GetCollection<T>(table);
            collection.InsertOne(record);
        }
        public static T FindRecord<T>(string table, string field, string value)
        {
            var collection = Mongo.db.GetCollection<T>(table);
            var fillter = Builders<T>.Filter.Eq(field, value);
            return collection.Find(fillter).First();

        }
        public static List<T> FillterRecords<T>(string table, string field, string value)
        {
            var collection = Mongo.db.GetCollection<T>(table);
            var fillter = Builders<T>.Filter.Eq(field, value);
            return collection.Find(fillter).ToList();
        }
        public static List<T> LoadRecords<T>(string table)
        {
            var collection = Mongo.db.GetCollection<T>(table);
            return collection.Find(new BsonDocument()).ToList();
        }
        public static void DeleteRecord<T>(string table,int id)
        {
            var collection = Mongo.db.GetCollection<T>(table);
            var fillter = Builders<T>.Filter.Eq("_id", id);
            collection.DeleteOne(fillter);
        }
    }

и это класс подключения

public static class Mongo
    {
        public static string database = "Garage";
        public static MongoClient client=new MongoClient();
        public static IMongoDatabase db = client.GetDatabase(database);
    }

Я буду рад, если кто-нибудь поможет мне

1 Ответ

0 голосов
/ 06 июня 2020

Измените свой идентификатор на ObjectId и не устанавливайте его перед вставкой, таким образом механизм базы данных установит его для вашего поведения и установит его для вашего объекта:

Проверьте следующий код :

class Order
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
}

var client = new MongoClient();
var database = client.GetDatabase("test");
var collection = database.GetCollection<Order>("orders");

// Leave the Id on Order as `null`
var myOrder = new Order {Name = "My Order"};
// Once we insert the Order the Id will be set.
await collection.InsertOneAsync(myOrder);

Console.WriteLine($"Order Id: {myOrder.Id}"); // Order Id: 5edbb15c75e67361d07362c2
Console.WriteLine($"Order Id: {myOrder.Name}"); // Order Id: My Order

...