2016-01-30 2 views
2

У меня есть коллекция с DateTime.C# Mongodb Найти ближайшего времени в коллекции

public class Trade 
{ 
     public ObjectId Id { get; set; } 
     public DateTime Expiary { get; set; } 
} 

Я использую драйвер C#, и я хочу, чтобы получить наиболее близкое Истечение срока от Trade коллекции. Возможно ли в mongodb максимально приблизить даты к данной дате? Update что-то вроде

collection.FindClosest(x => x.Expiary , DateTime.Now.AddDays(-1)) 

ответ

0

Если я правильно понимаю, «ближайшая дата» может рассматриваться как:

 var record = tests.Find(p => p.Date <= closestTo) 
      .SortByDescending(p => p.Date) 
      .FirstOrDefault(); 

Наверняка может быть документ с датой «ближе» к тому, что вы ищете на более высокой границе, но «будущее» для вашего фильтра, и в этом случае вы пропустите и принесете ближайшего старшего. Если ваше требование действительно требует, чтобы вы получили этот предмет, я должен сказать, что я не знаю об этом «монгольском пути». Это можно сделать, выполнив этот запрос дважды, во второй раз с инвертированным порядком (и .Date> closeestTo) и проверите в процессе, какой из двух объектов является самым близким.

0
MongoServer server = MongoServer.Create("mongodb://localhost"); 
MongoDatabase database = server.GetDatabase("test"); 

MongoCollection<BsonDocument> records = database.GetCollection("records"); 
records.Drop(); // Remove any existing documents. 

Record record = new Record {Timestamp = DateTime.UtcNow}; 
records.Insert(record); 

server.Disconnect(); 


{ "_id" : ObjectId("4e848461d0ba9f8047c27dc7"), "Timestamp" : ISODate("2011-09-29T14:44:49.172Z") } 



    Try this one! 
if ((expiryDate - DateTime.Now).TotalDays < 30) 
matchFound = true; 
+0

Я не думаю, что вы понимаете вопрос, видите мои правки ... – SexyMF

Смежные вопросы