我正在將我的博客轉換爲使用/year/month/day
類型的URL。儘管我已經遇到了一個非常糟糕的問題。我只想下降到小時/分鐘的分辨率,但是當然,我的所有參賽作品都儘可能保存完整時間(我不想改變這一點)。如何使用MongoDB中的時間數據將年/月/日日期解析爲更具體的日期?
我到底該如何解決一個具體的日期到一個不太具體的日期與MongoDB?我爲.Net使用10gen的官方MongoDB映射器。
我的數據模型是這樣的:
public class BlogEntryData
{
[BsonId]
public ObjectId ID;
public string Title;
public string Text;
public DateTime Posted;
public DateTime Edited;
public List<string> Tags;
[BsonDefaultValue(true)]
public bool Publish;
}
,我也得到了使用
var c=Config.GetDB().GetCollection<BlogEntryData>("entries");
BlogEntryData entry;
try
{
entry=c.FindOneByIdAs<BlogEntryData>(new ObjectId(RouteParams["id"]));
}
catch
{
throw new HttpException(404,"Blog entry not found");
}
if(entry==null)
{
throw new HttpException(404,"Blog entry not found");
}
我知道如何去改變它,而不是使用ID有點像我的博客條目數值搜索領域或其他,但我從來沒有查詢過日期。
另外,順便說一下,在我的輸入模型中存儲非規範化爲字符串的「URL日期」會更好嗎?我只想這樣做,如果索引不能在日期或東西上正常工作
ISODates存儲在(http://www.mongodb.org/display/DOCS/Dates)作爲'自Unix時代以來的毫秒數'而不是字符串格式。分別安置所有日期部分的索引策略不會超高性能,也會增加您的工作集大小和內存需求以滿足索引和存儲需求以及查詢時間,並且可能使分片更難以強制全局操作數據檢索。最好是僅通過C#代碼所示的標準時間集查詢。 – Sammaye
對不起,再次閱讀我的回覆,我的意思並不是暗示日期存儲爲字符串。實際上他們很長。但我對2和3的建議仍然存在。你是對的RAM。但是存儲非規範化的年份和日期仍然是一種價值方法。這一切都取決於你的查詢模式。我希望在這些選項中你有一個可行的解決方案。親切的態度 – cirrus
只要它被清除了:)否則人們會開始思考第一種方法是可能的。雖然在C#中它可能實際上包含一個'toString'函數,但我不知道,因爲我沒有用C#做MongoDB,但這是依賴於語言的。 – Sammaye