日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

写给MongoDB开发者的50条建议Tip11

發(fā)布時間:2023/12/31 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 写给MongoDB开发者的50条建议Tip11 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本系列文章翻譯自《50 Tips and Tricks for MongoDB Developers》,暫時沒有找到中文版,反正自己最近也在深入學(xué)習(xí)mongodb,所以正好拿來翻譯一下。一方面加強自己學(xué)習(xí)的效果,另一方面讓大 家也一起來體驗一下需要我們這些mongodb使用者需要注意的地方。

首先聲明自己的英文水平不是太高,加之有些英文翻譯成中文也找不到合適的詞來表達,所以在文章中可能會出現(xiàn)英文原詞,或者說有些地方的翻譯會有些生 硬,也就是說會出現(xiàn)直譯的地方。翻譯該書的主要目的是為大家學(xué)習(xí)探討用的,如果有翻譯不精準的地方,或者說有更加精準的翻譯,還請大家指出,我會及時的更 正的,在此先謝過各位了。

Tip11.Prefer $-operators to JavaScript

使用$操作符,而不是用javascript

對于大多數(shù)應(yīng)用,設(shè)計一個自包含的文檔,可以將查詢的復(fù)雜性降到最低。但是,有的時候你需要查詢的內(nèi)容用$操作符沒有辦法做到。這時候,可以使用javascript。你可以使用$where,在查詢中執(zhí)行任意的javascript代碼。

為了使用$where,你需要寫一個javascript函數(shù),返回值是true或者false。假設(shè)你需要返回member[0].value等于member[1].value的記錄,你可以這么做。

  • >db.members.find({"$where":function(){?
  • ??return?this.member[0].value==this.member[1].value;?
  • }})?
  • 只要你想到的,$where可以賦予你的查詢更強的能力。

    $where需要花費很長的時間,因為mongodb需要在幕后做很多工作。當(dāng)你執(zhí)行一個正常的(非$where)查詢,客戶端把查詢轉(zhuǎn)換成BSON,然后發(fā)送給數(shù)據(jù)庫。mongodb存儲數(shù)據(jù)也是用BSON,因此可以用條件進行基本的比較。這非常快,而且高效。

    現(xiàn)在假設(shè)在查詢時候需要使用$where。mongodb必須為集合中的每一個文檔創(chuàng)建一個javascript對象,解析文檔的BSON,然后將字段賦值到j(luò)avascript對象中。然后執(zhí)行你發(fā)送過去的javascript代碼,進行比較,然后再拆解這些對象。這相當(dāng)耗時,而且需要很多資源。

    $where在必要的時候是一個好的選擇,但是要避免任何時候都是用。事實上,如果在查詢中發(fā)現(xiàn)很多$where,這時候就需要重新考慮你的文檔結(jié)構(gòu)了。

    如果非要使用$where,你可以想一些辦法,減少使用$where的文檔數(shù)量。先用條件過濾,然后對過濾后的文檔使用$where,$where就不會花很長時間了。

    例如,我們在上面的場景使用$where,我們需要檢查member的age,我們只需要檢查相關(guān)的成員和家庭成員。

    ?

  • >db.members.find({"type":{"$in":['joint','family']},?
  • ??"$where":function(){?
  • ????return?this.member[0].value==this.member[1].value;?
  • }})?
  • ?

    現(xiàn)在,所有非joint和family的member就不用花時間執(zhí)行$where了。

    ?




    本文轉(zhuǎn)自 virusswb 51CTO博客,原文鏈接:http://blog.51cto.com/virusswb/799456,如需轉(zhuǎn)載請自行聯(lián)系原作者

    總結(jié)

    以上是生活随笔為你收集整理的写给MongoDB开发者的50条建议Tip11的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。