Как сохранить время ISO в mongodb с отметкой времени 0000000, используя C#? - PullRequest
0 голосов
/ 28 мая 2020

Я хочу сохранить экземпляр DateTime в MongoDB, используя C#. Поскольку mongodb использует ISO 8601 в качестве формата, дата, которую я передаю, сохраняется с меткой времени, что делает запросы с использованием этого поля даты кошмаром. Я пробовал DateTime.Now, DateTime.UtcNow, BsonDateTime объект, но все они сохраняются только с текущей меткой времени. Есть ли способ, с помощью которого я могу сделать поле даты для хранения даты и отдыха в виде нулей, спасибо

Piyu sh Kumar

1 Ответ

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

Вы можете настроить карту классов для своего класса, чтобы хранить только часть даты даты и времени с помощью следующего кода:

BsonClassMap.RegisterClassMap<Order>(map =>
{
    map.MapProperty(x => x.Date)
        .SetSerializer(DateTimeSerializer.DateOnlyInstance);
});

, затем при выполнении следующего

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

await collection.InsertOneAsync(new Order
{
    Name = "MyOrder", Date = DateTime.UtcNow.Date
});

в базе получим

> db.orders.find().pretty()
{
        "_id" : ObjectId("5ed8fb7050eb018e5ee13e73"),
        "Date" : ISODate("2020-06-04T00:00:00Z")
}
...