溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MongoDBRuby中如何嵌入Javascript

發(fā)布時(shí)間:2021-07-19 11:22:18 來(lái)源:億速云 閱讀:122 作者:Leah 欄目:數(shù)據(jù)庫(kù)

這篇文章將為大家詳細(xì)講解有關(guān)MongoDBRuby中如何嵌入Javascript,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

  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類。現(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ù)分別寫(xiě)到不同的文件中,這樣做也許更便于測(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ǔ)言混合在一起編寫(xiě),并沒(méi)有影響到代碼的可讀性。而如果給定一個(gè)關(guān)系數(shù)據(jù)庫(kù),用戶有可能寫(xiě)出各種各樣千奇百怪的SQL語(yǔ)句——因?yàn)榕c其他任意語(yǔ)言和SQL之間的語(yǔ)法差異相比,Javascript和Ruby之間的語(yǔ)法差異都要小得多。

關(guān)于MongoDBRuby中如何嵌入Javascript就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI