這篇文章將為大家詳細(xì)講解有關(guān)MongoDBRuby中如何嵌入Javascript,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、青山湖網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開(kāi)發(fā)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為青山湖等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。MongoDBRuby中怎樣嵌入Javascript
class Publication
include Mongoid::Document
field :name, :type => String
field :section, :type => String
field :body, :type => String
field :is_published, :type => Boolean
end
class LongerPublication
field :extra_body, :type => String
end
此時(shí)系統(tǒng)中已經(jīng)存在一個(gè)Publication類和一個(gè)LongerPublication類?,F(xiàn)在需要做一些信息匯總方面的工作,想通過(guò)Publication類對(duì)象的類型與狀態(tài)得到對(duì)其的數(shù)量統(tǒng)計(jì)信息。另外好能夠按照當(dāng)前的狀態(tài)進(jìn)行具有針對(duì)性的統(tǒng)計(jì)分析。
一種方法是使用Mongo內(nèi)置的map-reduce。Mongoid擴(kuò)展了該功能,讓程序員可以使用Ruby程序?qū)崿F(xiàn)其所需的內(nèi)聯(lián)Javascript函數(shù)(mapper和reducer)。讀者可能覺(jué)得這種方法并不好,不過(guò)似乎這是目前好的方法了。有很多更復(fù)雜的函數(shù)將這些Javascript函數(shù)分別寫到不同的文件中,這樣做也許更便于測(cè)試,但讀者如果自行測(cè)試整個(gè)工作中這項(xiàng)工作的輸入/輸出,就會(huì)發(fā)現(xiàn)其性能并不好。
MongoDBRuby中怎樣嵌入Javascript
KLASS ="this._type"
SECTION ="this.section"
def self.count_by(type)
map = < function() { function truthy(value) { return (value ==true) ?1 :0; } emit(#{type}, {type: #{type}, count:1, published: truthy(this.is_published)}) } EOF reduce = < function(key, values) { var count =0; published =0; values.forEach(function(doc) { count += parseInt(doc.count); published += parseInt(doc.published); type = doc.type }; return {type: type, count: count, published: published} } EOF collection.mapreduce(map, reduce).find() end 在進(jìn)行實(shí)驗(yàn)測(cè)試時(shí)會(huì)返回類似如下代碼所示的數(shù)據(jù);不過(guò)有些讀者在實(shí)驗(yàn)時(shí)也有可能返回Mongo::Cursor,通過(guò)Mongo::Cursor可以獲取到以下數(shù)據(jù)。 [{"_id"=>"Publication","value"=>{"type"=>"Publication","count"=>42.0,"published"=>29.0}},
{"_id"=>"LongerPublication", "value"=>{"type"=>"LongerPublication", "count"=>12.0, "published"=>10.0}}]
Mongo與Mongoid使我非常喜歡這種信息匯總時(shí)的mapreduce工作,特別是將Ruby與Javascript這兩種編程語(yǔ)言混合在一起編寫,并沒(méi)有影響到代碼的可讀性。而如果給定一個(gè)關(guān)系數(shù)據(jù)庫(kù),用戶有可能寫出各種各樣千奇百怪的SQL語(yǔ)句——因?yàn)榕c其他任意語(yǔ)言和SQL之間的語(yǔ)法差異相比,Javascript和Ruby之間的語(yǔ)法差異都要小得多。
關(guān)于MongoDBRuby中如何嵌入Javascript就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。