2014-01-25 42 views
0

如何檢查MongoDB字段內的字段長度並僅返回其150個第一個字符?如何檢查mongodb字段內的字段長度並僅返回其150個第一個字符

我看了mongoDB查詢字符串或更新操作符,但找不到這個東西。

基本上我有這顯然有一些職位的博客,所以我的帖子的文件看起來是這樣的:

{ 
    "_id" : "XCGCvb8tEbWCbQk7S", 
    "author" : "Boaz Hoch", 
    "date" : "Fri, 24 Jan 2014 12:57:49 GMT", 
    "desc" : "string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-string-", 
    "metaDesc" : "first post", 
    "metaKeywords" : "first,post", 
    "metaTitle" : "first Post", 
    "title" : "first Post" 
} 

所以我想這樣做,採取遞減場,這是該職位的描述並將其分成前150個字符,因此在帖子頁面中,我只能看到整篇文章的一小部分內容,並添加「...」以表示「繼續閱讀」。

回答

3

第一備選方案:您可以創建一個模板幫手

Template.postsListTemplate.helpers({ 
    shortDesc: function() { 
    return this.desc.substring(0,150); 
    } 
}); 

另一種方法是使用轉換函數在自己的帖子收集

Posts = new Meteor.Collection("posts", { 
    transform: function (doc) { 
    doc.shortDesc = doc.desc.substring(0,150); 
    return doc; 
    } 
}); 

一個更好的選擇是存儲短版例如您的文檔中的shortdesc作爲單獨的屬性插入/更新,因此在您的文章發佈中,您可以發送該文檔,並且在您的單張發佈中​​,您可以發送實際的desc。這樣可以優化您的發佈,併爲您節省將整個發佈內容發送到列表頁面的帶寬,您只需要前幾個字符。

+0

謝謝,我沒有想到的幫手選項,但轉變和新領域「shortDesc」在我心中,只是不知道哪個更好。實際上,我不確定選項3(新字段)是否更好,然後在模板上做助手,請檢查兩個選項。再次感謝:) –

+1

模板似乎是您的代碼首選的方式,更容易遵循。如果您最終發佈了許多帖子到您的帖子列表頁面,您一定會發現只發布您的頁面/模板上精確需要的內容的優勢。有很大的性能提升。 –

+1

@BoazHoch側注 - 如果你碰巧使用[下劃線字符串](https://atmosphere.meteor.com/package/underscore-string-latest),'_.prune'對於這類事情來說非常棒。 –

相關問題