Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4...

112
Big Data Withe MongoDB Now you can behave faster… masoumeh ebhami www.Aiapir.com

Transcript of Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4...

Page 1: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

Big Data Withe MongoDB Now you can behave faster…

masoumeh ebhami

www.Aiapir.com

Page 2: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

1

دیف فشبض

زا زض ذسز قب زؾشب ػعیع لطاض وشبة زی ثی ضذسا ضا قبوط و ساؿش ا یطایف ز اظ

ضظ زض اذشیبض قب ػعیعا لطاض ؾؼی ثط ای اؾز و غبت ػسیس زض ضز ای دبیب زاز ضا ثب سػ ث ػ

ز.

ذاكس ؿش و ثب اشمبز دیكبزار ذز طا زض ای ضا یبضی ویس

ؼه اثبی

92-93 بظؿش

برداشت پژوهشی با ذکر منبع بال مانع می باشد

Page 3: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

2

فطؾز

4 فه ا

mongoDBؼطفی

9 فه ز

mongoDBفبی ػز زض

14 فه ؾ

mongoDBقطع وبض ثب

24 فه چبض

دطؼ ػب

36 فه دؼ

Sharding

43 فه قك

Aggregation ب

51 فه فش

ایسوؽ صاضی

60 فه كش

mongoDBسیطیز زض دبیبز زاز ی

Page 4: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

3

77 فه

Replication

83 فه ز

Php mongodb

89 فه یبظز

GridFS

93 ضی ی یه

Wire Protocol-

Data Files-

Namespaces and Extents-

Memory-Mapped Storage Engine-

97 ضی ی ز

دبیب زاز shellآقبیی ثب

102 ؾضی ی

mongoDBهت

Page 5: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

4

mongoDBؼطفی

Page 6: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

5

mongoDB میبؼ دصیط اؾز.ای دبیب زاز سابیی ؼغف ,یه دبیب زاز لیscale

out وطز ذیی اظ یػی بی دبیب زاز بی ضاثغ ای ظ ایسوؽ صاضی زا ی

دطؼ ػب شذیط ؾبظی ضا زاضا ی ثبقس.

mongoDB ث عض ثبض ىطزی دط یػی اؾز.ذیی اظ یػی ب ظbuilt-in ثز

MapReduce-style aggregation MapReduce-styleدكشیجبی وطز اظ

aggregation و ثؼسا زض ضز طوسا غبجی ضا ذای آذز. زاضا ی ثبقسضا

mongoDB یه س زاز ایDeveloper دؿس زاضای دیىطثسیadministrator دؿس

اؾز

ضا زاضا ی دبیب زاز shellب Driverثؾی ی ػیبی ظثب بی API چی زاضای

. بقسث

mongoDB ذیط ی اظ كى شثطب یؿی ثس طاؾی سالـ ی وس و ضا قب ضا ث

زاز ب سغییط ثسس

mongoDB .زی انی ثطای وبض یه دبیب زاز ؾسطا اؾز یه دبیب زاز ی ضاثغ ای

اؾز اب ؾبیط mongoDBظثب ثز scale out سابیی ساقش زیشبثیؽ بی ضاثغ ای

زاضز.یع عایببی زیط ضا

ثب یه س اؼغبف دصیطسط ث rowػبیعی وطز ف mongoDBعطاحی ایس ی دبی زض

ث وبضثط ی زساؾز ؾسطایی اىب ایؼبز ؾس بی زاذی آضای ب ضا documentب

.ضا ی ثبقسایع ز ثز زیشبثیؽ ضایب ثس قب scheme-less چی

Easy scaling

Page 7: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

6

ثب سػ ث ؾطػز ضقس حؼ زاز ب دیكطی زض ای سىغی حؼ اعالػبسی و زض دبیب

احؿبؼ سیطیز ػبؼی ازاض وطز ای اعالػبر ظیبز ثطای زاز یبظ ث شذیط ؾبظی زاضس

قز. ی

چ دبیب زاز ذز ضا میبؼ دصیط وی؟

ی ضؾیعی ثطای میبؼ دصیط وطز دبیب زاز ث ز

1-scalling up)ثعضي وطز بقی ب(

2-scalling out)دبضسیك ثسی وطز زض ثی چسی بقی(

اظ آؼبیی و ایؼبز بقی ثعضي مط ث نطف یؿز چی یبظ ث فضبی ثعضشطی زاضز

scalling out وبضایی ز و ثطای اضبف وطز ثبال ثطزاؾ سط الشهبزی سطوطز سؾؼ دصیط

)ثؼسب زض ای وشبة ی سا یه ؾطض بؾت ذة ذطیساضی وطز ث ؼػ ذز اضبف وطز.

ث ای ؼػ والؾشط یع فش ی قز(

mongoDB ثط دبی یscale out ؾسطا ثز س زاز ب ای اػبظ اؾز قس عطاحیثز

ضا ی زس و زاز ب ث عض ػساب زض ضی چسی ؾطض درف قس و زاز ب ز وطز

س و زیه ط ضا ث سؼبز ی ضؾ.سظیغ ؼسز زؾش ب اسبسیه اؾز و ای اىب ضا ی

یف ثطب یؿب ثس طای اظ شذیط زاز ب ضی ثطب یؿی سطوع وس ثطای افعا

ظطفیز زاز ب سب یبظ ث سی ی یه ؾطض زاقش ثبقس ث آؾبی كى ایى چ زاز

ب ضا شذیط وی ح ی قز.

یػی ب

غ زض مبیؿ ثب دبیب زاز بی ضاث .چ ثیب وی mongoزض كى اؾز و یػی ب ضا

طای زیط؟ؿ ثب زیط دبیب زاز بی ؾسای یب زض مبی

Page 8: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

7

الؼب ذة اؾز اثعاضبی حهطث فطزی زاضز و mongoDBذالن حطف ای اؾز و

زیط شببی ضلیجف ساضس.

Indexing : generic secondary indexes دطؼ ػبی ؾطیغ یىشبیی

compound لبثیز geospatial indexing ث ذثی دكشیجبی ی وس.ضا

JavaScriptاجبقش ی

valueاظ ساثغ ,ػال ثط شذیط ؾبظیسیس وس ب ی ساس , ثؼبی شذیط ؾبظی ضی ب

ب زض ؾز ؾطض اؾشفبز وس.

Aggregation

دكشیجبی ی وس. Aggregation زیط اثعاضبی MapReduceاظ

Fixed-size collections

Capped collections زاضای اساظ طبثشی ؿشس و ای یػی فیس اؾز ثطای ع كرهی

ب. logsاظ زاز ب ظ

File storage

mongoDB .اظ یه دطسى ؾبز ثطای شذیط ؾبظی زاز ب اؾشفبز ی وس

ػز mongoDBثؼضی اظ یػی ب ثب دبیب زاز بی ضاثغ ای كشطن اؾز اب ثؼضی زض

ؾغطی .ظیطا دیبز ؾبظی ای یػی ب زض س ب یب سطاوف بی دیچیس چ join ساضز ظ

ؾیؿش بی سظیغ یبفش كى اؾز.

وبضایی ثبال ثس اسالف ؾطػز

اؾز اظ ظب عطاحی ث اػطا زضآس اؾز و اظ mongoDBوبضایی ثبضىطزی سف االی

دطسى بی ؾیی ثبیطی ث ػا ز انی ثطای فؼ افؼبالر ثب ؾطض اؾشفبز ی وس.

Page 9: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

8

ذیی لسضسس اؾز ؾؼی زض زاقش ذیی اظ یػی بی دبیب زاز mongoDBاطچ

بی ضاثغ ای ضا زاقش ی اشربة ذثی ثطای اؼب طچیعی و سؾظ دبیب زاز بی ضاثغ

ای اؼب ی قز یؿز .

غمی ؾز والیز اؼب یطز و ای offloadزض ط ظبی ى اؾز دطزاظـ ث نضر

قس اؾز. mongoDBعطاحی ؾجت ثبال ثطز وبضایی

مدیریت آسان

mongoDB سالـ ث ؾبز ؾبظی سیطیز ثطاؾبؼ

ػال ثط ضا اساظی ؾطض دبیب زاز یبظ ث ذیی اظ سیطیز بی ضیع زاضی اط یه ؾطض

master ذبـ قز ث نضر اسبسیه یه ؾطضslave ػبیعی ؾطضmaster .ی قز

ای اؾز و ؾطض ثبیس ازاض قز سب حس اىب دیىطثسی mongoDBفؿف ی سیطیز زض

اسبسیه ای اػبظ ضا ی زس و وبضثطا اسهبشكب ضا زض نضر یبظ ثبال ثجطس.

Page 10: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

9

mongoDBفبی ػز زض

ی دطزاظی mongoDBزض ای فه ث ثطضؾی فبی ػز زض

Page 11: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

11

Document ؾس(یه احس دبی ثطای زاز ب اؾز فی قجی ضزیف زض دبیب زاز بی(

ضاثغ ای اؾز

Collection ؼػ (ی سا ثطاثط یه ػس ثس قب ؿز(

ی ساس یه ط ؿشظ اظ دبیب زاز ب ثبقس و ط وسا ؼػ mongoDBیه ظب اظ

ب زؾشطؾی بی ذبل ذز ضا زاضز.

mongoDB اظ یه دؾش ی ؾبز یjavaScript ثػز آس اؾز

و زض ثی ؾس بی یه ؼػ یىشب ؿز. "id_"ط ؾس زاضای یه ویس رهل

Documents

ثیب ی قز objectب ث ػا یه زض ػبا اؾىطیذز ؾس

{ “ greeting” : “hello!” }

اؾز یب ی ساس دیچیس !helloثب اضظـ greetingزض ای ؾس ؾبز و حشی یه ویس ث ب

ثبقس ظ

{“greeting” : “hello!” , “number” : 3}

ای ظب ث ذثی چسی ف ضا ثیب ی وس

اضظقف زض ؾس ث سطسیت ؿشس ثبثطای ز ؾس ظیط ثب سفبر زاضسسطویت ویس 1.

{“number” : 3, ”greeting” : ”hello!” }

{“greeting” : “hello!” , “number” : 3}

.مساضب زض یه ؾس ى اؾز چسی ع ثبقس ظال زض ظب ثبال ع ضقش زاضی 2

ع ػسز.

Page 12: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

11

(\0ثبقس) null.ویس ب جبیس زاضای وبضاوشط 3

قطع ی قس ث ػا ویس بی ضظ قس غطح ی قس اطچ اػجبضی _.ویس بی و ثب 4

زض ای ضز ػز ساضز.

mongoDB type-sensitive case-sensitive اؾز ثسی ؼی و اؾبز ظیط ثب سفبر

زاضس

{"foo" : 3}

{"foo" : "3"}

{"foo" : 3}

{"Foo" : 3}

: بیی ىش ی

ی ساس قب ویس بی سىطاضی ثبقس.ثب ای حؿبة ؾس ظیط mongoDBؾسب زض

غیطلبی اؾز

{“greeting” : “hello!”,”greeting” : “hello word!”}

ب صاضی ؼػ ب

ثب یىؿطی اظ حسزیز ب اؾشفبز وطز utf-8ثطای ب ساضی ی سا اظ فطز

جبقس (““)ضقش ی ذبی -1

Page 13: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

12

(\0جبقس) nullقب وبضاوشط -2

ثبقس ظیطا ای ب ساضی ثطای ؼػ بی ؾیؿشی ضظ .systemجبیس زاضای دیكس -3

قب یظضبی دبیب زاز اؾز. system.users قس اؾز بس

ثبقس $قز جبیس قب وبضاوشط ػ بیی و سؾظ وبضثط سؼطیف یؼ -4

دبیب زاز

ط دبیب زاز زض فبی ػساب . ؼػ ای اظ ؼػ ب سكىی یه دبیب زاز ضا ی زس

ثب زؾشطؾی بی ذبل ذز شذیط ی قز.

لای ب صاضی دبیب زاز

( ثبقس““جبیس قب ضقش سی ) -1

ثبقس nullیب وبضاوشط \ / $ . ( ’‘جبیس زاضای وبضاوشطبی ) -2

ثبیس اظ حطف وچه اؾشفبز قز -3

ثبیز ثبقس 64بوعی ب دبیب زاز ثبیس -4

و ی سای ث آب زؾشطؾی ؿشمی زاقش ثبقی mongoDBزیشبثیؽ بی ضظ قس زض

قب:

Admin

adminیه یظض ث ب ی ثبقس اط authenticationزیشبثیؽ ضیك اؾز و قب

ب ضا ث اضص ی ثطز.authentication اضبف قز ث عض اسبسیه زؾشطؾی ثطا

Local

Page 14: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

13

ای دبیب زاز زثبض ؾبذش ی قز ثطای زذیط ؾبظی ط ؼػ ای و ثبیس ضی یه

ثبقس اؾشفبز ی طزز. localؾطض فطز

Config

ب اؾشفبز ی قز. shardشذیط ؾبظی اعالػبر زض ضز shardedزض ؾز

یه فضبی ب ػبؼی ضا سیس ظبی و اؾ دبیب زاز ضا طا ثب اؾ ؼػ ی یؿی

ی زض دبیب زاز blog.postی ب زاضزثطای ظب ؼػ namespaceوی و ی

cms ػز زاضز وcms.blog.post یه فضبی ب ی قز و ای فضبی ب زاضای

ثبیز ثبقس. 100ثبیز حسال 121ع حساوظط

Page 15: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

14

mongoDBقطع وبض ثب

Page 16: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

15

mongoDBع وبض ثب قط

ضا هت وطز ای ی mongoDBاثشسا اضز ؿیطی و mongoDBثطای وبض ثب دؾش

سب ؾطض زیشبثیؽ قطع ثىبض وس ضا اػطا ی وی mongod زؾشض cmdقی ؾذؽ زض

cmd زیطی ضا ثبظ وطز mongo ث ای ىش سػ ویس و اض ثطای ی یؿی

بیی اؾشفبز ی ctrl cثؿش ؾطض اظ ویس سطویجی

یچ وطز ث یه دبیب ئشه ی قی ثطای ؾ testث نضر دیف فطو ث دبیب زاز

ط اظ زؾشض زاز ی زی

> use tutorial

switched to db tutorial

Page 17: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

16

شم قس ای tutorialاؾشفبز ی وی ثطای ظب زض زؾشئط ثبال ث زیشبثیؽ

ای یچ وطز ؾئ tutorialای اؾز و ب ث زیشبثیؽ mongoDBیه اسفبق ػبت زض

ثس ایى آ ضا ایؼبز وی.زض حمیمز یبظی یؿز و ب زیشبثیؽ ضا ایؼبز ضا وی ظیطا

runTimeث نضر documentب زض لغ اضز وطز ای collectionزیشبثیؽ

ؾبذش ی قس

یه ؾس ظ ؾس ظیط ثطای سنیف وبضثط ایؼبز و ب ی ذای ثطای ظب فطو ویس

وی

{username: "ashli"}

زؾشضار ظیط ضا ث سطسیت زجب ی وی

ثطای اضز وطز ای ؾس ذز ث یه ؼػ یبظ زاضی و ثب زؾشض ظیط ای ؼػ

ای ؾس ذز ضا ایؼبز ی وی

> db.users.insert({username: "ashli"})

اط زلز وی دؽ اظ اضز وطز زؾشض اػطای آ یه سبذیط بچیعی ضا احؿبؼ ی وی

فضب زی ث ای ز زض ضی ای سبذیط بقی اظ ظب الظ ثطای ایؼبز زیشبثیؽ ؼػ .

زیؿه ی ثبقس.

ث زضؾشی شذیط قس ؾس غئ ی قی ودؽ اظ زضؾز اضز وطز ؾس ثب زؾشض ظیط

اؾز

> db.users.find()

قش ی ظیط زض ذطػی ظبط ی طزز ,دؽ اظ اػطا

Page 18: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

17

{ _id : ObjectId("4bf9bec50e32f82523389314"),

username : "smith" }

ث ؾس ب اضبف ی قز و ای قبؾ حى ویس id_ ذای زیس و یه ,اط زلز وی

یه قبؾ ث ؾس ب ث نضر ,ایؼبز ط ؾس.زض حمیمز زض ظب انی ضا ثطای ب زاضز

.یىشبؾز, قبؾ زض ثی ؾسبی یه ؼػای.ذزوبض اضبف ی طزز

عجك طاح ظیط زاضیذز ؼػ یػسیس ث ؾس ثطای اضبف وطز یه

> db.users.save({username: "jones"})

ػز زاقش ثبقس ؾسحبال ثبیس زض ؼػ ی ب ز

> db.users.count()

2

ثطای كبس ی سب اؾبز ػز زض ؼػ زاضی:

> db.users.find()

{ _id : ObjectId("4bf9bec50e32f82523389314"), username :"ashli" }

{ _id : ObjectId("4bf9bec90e32f82523389315"), username : "jones" }

jonesب وبضثطی ثطاثط چی ثب اؾشفبز اظ زؾشض ؾبز ظیط السا ث اشربة یه ؾس حبی

زض ؼػ ی ضز ظط ی وی

> db.users.find({username: "jones"})

{ _id : ObjectId("4bf9bec90e32f82523389315"), username : "jones" }

ثطظ ضؾبی

یبظ ث ز آضب زاضی. updateزض ی ػیبر

Page 19: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

18

آضب ا و ؾس ضز ظط ثطای آدسیز ضا كرم ی وس آضب ز كرم ی وس

چ ؾس ذز ضا ثطظ وی

ضا یع اضبف وی countryضز ashliثطای ظب لهس زاضی ثطای وبضثط

> db.users.update({username: "ashli"}, {$set: {country: "Canada"}})

ضزی ashliزؾشض ظیط ضا اػطا وی .كبس ی قز و ث ؾس حبی ب وبضثطی حب اط

یع اضبف قس اؾز countryثب

> db.users.find({username: "ashli"})

{ "_id" : ObjectId("4bf9ec440e32f82523389316"),

"country" : "Canada", username : "ashli}

ضا حصف وی وبفی ؾز زؾشض ظیط countryظط عی ی حب اط ثرای ثطای وبضثط ضز

:ضا اػطا بیی

> db.users.update({username: " ashli "}, {$unset: {country: 1}})

favoritesثطای ؾبذشبضبی دیچیس سط بس شیط ؾبظی دطفبی یه وبضثط و زاضای یؿشی اظ

اؾز زاضی :

{ username: " ashli ", favorites: { cities: ["Chicago", "Cheyenne"],

movies: ["Casablanca", "For a Few Dollars More", "The Sting"] {

}

ظیط اؾشفبز وطزچی ی سا ثؼبی اظ قش ؾس اظ زؾشض > db.users.update( {username: " ashli "}, { $set: {favorites: {

Page 20: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

19

cities: ["Chicago", "Cheyenne"], movies: ["Casablanca", "The Sting"] } } })

ثطاثط moviesثطای ظب قب ی ذایس وبضثطای ضا دیسا ویس و ػالل سی بیف زض

"Casablanca" اؾز.

> db.users.find({"favorites.movies": "Casablanca"})

سض ػؿشؼ ای زؾشض ضا ی زس و ویس ث favorites movies ).( ثی مغ

favorites ضا دیسا و و قب ویس زضی movies اضظـ ؿبی ثبCasablanca قسثب

ثطای ظب بی ثیكشط قب فطو ویس و ثب سػ ث زاف ذز ی زای و طوؿی و

Casablanca ضا زؾز زاضز ث عض حشthe maltese falcon ضا یع زؼ زاضز .ثطای

اؾشفبز وی set$ضا ا ایؿز و اظ ػط ثطظضؾبی زیشبثیؽ ثطای بیف ای الؼیز

زاقش ثبقی .ضا ح ز moviesی ثطای اؾشفبز اظی ػط یبظ ث زثبض یؿی آضای ی

اؾشفبز وی .زضحمیمز ای ز ػط ػهط $push addToSet$ط ایؿز و اظ ز ػ

اضز وطز ػهط سىطاضی ػیطی اظػسیسی ث آضای اضبف ی وس ثب ای سفبر و ػط ز

ی وس.ثب اػطای زؾشض ظیط زاضی:

db.users.update( {"favorites.movies": "Casablanca"}, {$addToSet: {"favorites.movies": "The Maltese Falcon"} }, false, true )

آضب ز زؾشض اضبف وطز ػهط آضب ا قطط ثطای دیسا وطز ؾس ضز ظط اؾز.

وس آضب چبض ای ضا كرم ی ػسیس زض ضز آضب ؾ ثؼسا سضیح ذای زاز

ثبقس. ی multi-updateو ای زؾشض یه

Page 21: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

21

صف وطز زازح

زؾشض ظیط ضا اضز ی بیی fooثطای حصف وطز یه ؼػ ثب

> db.foo.remove()

ادط یبظ زاقش ثبقی و ظیطؼػ ی ذبنی اظ یه ؼػ ضا حصف بیی ثب اؾشفبز اظ زؾشض

ظیط السا ث آ حصف آ ؾس یب ظیطؼػ ی بیی

> db.users.remove({"favorites.cities": "Cheyenne"})

ؼػ ضا حصف ی وس ثى سب اؾبز زض removeثبیس سػ زاقش ثبقی و زؾشض

اؾشفبز ی dropبیف اظ زؾشض indexآ دبن ی قس.ثطای حصف وب ؼػ ثب سب

بیی

> db.users.drop()

ضيایؼبز ؼػ بی ثع

ای اؾز و ثغطیك آ ی سا ث یه ؼػ سؼساز ظیبزی اؾبز indexingیه ظب ثطای

ی سا ثب اؾشفبز اظ زؾشض shellث یه ثبض اضبف وطز ظال زض

for(i=0; i<200000; i++) {

db.numbers.save({num: i}); }

اظ فؿط shellث زی ایى ) اضبف وطزی numbersؾس ث ؼػ ی 200000ث سؼساز

javaScript )دكشیجبی ی وس دؽ زؾشض ثبال لبث لج اؾز

شیؼ...

> db.numbers.count()

Page 22: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

21

200000

> db.numbers.find()

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac830a"), "num" : 0 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac830b"), "num" : 1 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac830c"), "num" : 2 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac830d"), "num" : 3 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac830e"), "num" : 4 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac830f"), "num" : 5 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8310"), "num" : 6 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8311"), "num" : 7 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8312"), "num" : 8 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8313"), "num" : 9 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8314"), "num" : 10 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8315"), "num" : 11 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8316"), "num" : 12 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8317"), "num" : 13 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8318"), "num" : 14 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8319"), "num" : 15 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac831a"), "num" : 16 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac831b"), "num" : 17 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac831c"), "num" : 18 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac831d"), "num" : 19 }

ثطای زیس ثمی ؼػ وبفیؿز ثیؿی

> it

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac831e"), "num" : 20 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac831f"), "num" : 21 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8320"), "num" : 22 }

...

Page 23: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

22

و ث سطسیت ثیبط )ثعضشط اظ( یب )وچىشط اظ( اؾز ی gt $lt$چی ثب اؾشفبز اظ زؾشض

سا دطؼ ػبی ظیط ضا زاقش ثبقی

> db.numbers.find( {num: {"$gt": 199995 }} )

{ "_id" : ObjectId("4bfbf1dedba1aa7c30afcade"), "num" : 199996 }

{ "_id" : ObjectId("4bfbf1dedba1aa7c30afcadf"), "num" : 199997 }

{ "_id" : ObjectId("4bfbf1dedba1aa7c30afcae0"), "num" : 199998 }

{ "_id" : ObjectId("4bfbf1dedba1aa7c30afcae1"), "num" : 199999 }

> db.numbers.find( {num: {"$gt": 20, "$lt": 25 }} )

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac831f"), "num" : 21 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8320"), "num" : 22 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8321"), "num" : 23 }

{ "_id" : ObjectId("4bfbf132dba1aa7c30ac8322"), "num" : 24 }

Explain()

اثشسا ثب یه ظب قطع ی وی ()explainثطای آقبیی ثب

> db.numbers.find( {num: {"$gt": 199995 }} ).explain()

ثبال ضا اػطا بیی كبس ی وی و شبیغ ظیط ث ب ثططزاس ی قزوس اط

{ "cursor" : "BasicCursor",

"nscanned" : 200000,

"nscannedObjects" : 200000,

"n" : 4,

Page 24: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

23

"millis" : 171,

"nYields" : 0,

"nChunkSkips" : 0,

"isMultiKey" : false, "indexOnly" : false, "indexBounds" : { } }

ذز ایسوؽ ثصاضی numب ی سای ثب اؾشفبز اظ زؾشض ظیط ثطی ویس

> db.numbers.ensureIndex({num: 1})

ضا ایؼبز numberی زض ؼػ num زؾشض ثبال ایسوؽ صاضی نؼزی ضا ضی ویس

قز و ایسوؽ صاضی اؼب طفش كرم ی ()getindexesثب اؾشفبز اظ زؾشض .وس ی

قس اؾز

> db.numbers.getIndexes() [ {query "name" : "_id_", "ns" : "tutorial.numbers", "key" : {

"_id" : 1

} }, {

"_id" : ObjectId("4bfc646b2f95a56b5581efd3"),

"ns" : "tutorial.numbers", "key" : {

"num" : 1},

"name" : "num_1"}

]

حب اط زؾشض لجی ضا اػطا بیی كبس ی وی و

Page 25: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

24

> db.numbers.find({num: {"$gt": 199995 }}).explain()

{

"cursor" : "BtreeCursor num_1",

"indexBounds" : [ [ {

"num" : 199995},

{

"num" : 1.7976931348623157e+308}

] ],

"nscanned" : 5,

"nscannedObjects" : 4,

"n" : 4,

"millis" : 0

}

یی 1یی طبی ث وشط اظ 171كبس ی قز و ثب ایسوؽ صاضی ظب دطؼ ػ اظ

طبی وبف دیسا وطز اؾز.

Page 26: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

25

دطؼ ػب

Page 27: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

26

ظیط ب عض و اظ لج ی زای ثطای بیف طچیعی و زض یه ؼػ اؾز اظ زؾشض

اؾشفبز ی بیی

> db.c.find()

ضا ثطی طزاس cزؾشض ثبال سب ػبنط ؼػ ی

ثططزاس قز وبفی ؾز ثیؿی age=26 حب اط ثرای ػبنط ثب

> db.users.find({"age" : 27})

ثطای لطاض زاز قطط چسسبیی عجك ظیط ػ ی وی

Condition1 and condition2 and …

> db.users.find({"username" : "joe", "age" : 27})

1ػؿشؼ وبفی ؾز اضظـ ویس ضز ظط ضا حبن اظثطای كرم وطز ویسبی ثطكشی

وی

> db.users.find({}, {"username" : 1, "email" : 1})

{

"_id" : ObjectId("4ba0f0dfd22aa494fd523620"),

"username" : "joe", "email" : "[email protected]" }

زض نضر اشربة وطز یب اشربة ىطز زض شیؼ ب id_سػ زاقش ثبقیس و اض ویس

ظبط ی قز

ی 0اط ثرای ی ویس ب ثؼع ویس ضزظط ثطكز زاز قس اضظـ ویس ضزظط ضا

وی

> db.users.find({}, {"fatal_weakness" : 0})

Page 28: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

27

زض شبیغ ػؿشؼ ػیطی وس id_زؾشض ظیط ی ساس اظ ظبط قس

> db.users.find({}, {"username" : 1, "_id" : 0})

{

"username" : "joe",{

قطط ب

ػجبضار مبیؿ ای قب اضز ظیط اؾز"$lt", "$lte", "$gt", "$gte", <, <=,>, >= > db.users.find({"age" : {"$gte" : 18, "$lte" : 30}})

ؾب ؿشس 30سب 18زؾشض ثبال وبضثطای ضا ثطی طزاس و زاضای ضغ ؾی ثی

ػض قس اس ضا ثطی طزاس 2007/01/01وبضثطای ضا و لج اظ چی زؾشض ظیط و

> start = new Date("01/01/2007")

> db.users.find({"registered" : {"$lt" : start}})

یؿز اظ زؾشضی كبث ظیط )ػ(ثطاثط اضظـ ضزی )ب وبضثطی(ثطای اشربة اؾبزی و اضظقف

اؾشفبز ی وی > db.users.find({"username" : {"$ne" : "joe"}})

ثب ط ع زاز ای ثىبض ثطز ی قز "$ne"

Or queries

و ثطی یه ویس "in$"ػز زاضز ای ضا اؾشفبز اظ orز ضا ثطای اؼب دطؼ ػب ثب

زاقش یىی اظ ثیظ اؼب ی یطز بس ظب ظیط و ثطسب ؿبثم ی ثرز آظبیی ضا زض نر

ضا كرم ی وس 8 5 3بی ثب قبض

> db.raffle.find({"ticket_no" : {"$in" : [3, 5, 8]}})

چی ی سا اظی ػط ثطی ویسی ثب اضظـ بی شع اؾشفبز ز ثطای ظب:

Page 29: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

28

> db.users.find({"user_id" : {"$in" : [12345, "joe"]})

ىش(ز ػجبضر ظیط ثطاثطس {ticket_no : {$in : [725]}};; {ticket_no : 725}

ی ثبقس nin$ػط in$مغ ی مبث ػط

> db.raffle.find({"ticket_no" : {"$nin" : [3, 5, 8]}})

اؾز "or$"زض قطط ب اؾشفبز اظ orضا ح ز زض ثىبضیطی

> db.raffle.find({"$or" : [{"ticket_no" : 3}, {"winner" : true}]})

یب > db.raffle.find({"$or" : [{"ticket_no" : {"$in" : [3, 5, 8]}},

{"winner" : true}]}) $not

... 2345789ثطاثط اػساز id_numثطای ظب فطو ویس و ب یبظ ث وبضثطای زاضی و زاضی

... ؿشس ضا ػسا وی ثمی 161116ثطاثط اػساز id_numؿشس زض اثشسا ثبیس وبضثطای ضا و زاضای

ؿشس ثسی ؾب mod[5,1]وبضثطا ضا بیف زی اظ آؼبیی و وبضثطا ػسا قس زاضای قبؾ ی

ػ ی بیی

> db.users.find({"id_num" : {"$not" : {"$mod" : [5, 1]}}})

ىبر(

قطط چسسبیی لبثیز اػطا ضی یه ویس ضا زاضس اب ثطظضؾبی چسسبیی لبثیز اػطا ثطی -1

ضا سغییط ageیه ویس ضا ساضز ثطای ظب زؾشض ظیط بؼشجط اؾز ظیطا عب زثبض ویس

لج اؾززس و غیطلبث ی{"$inc" : {"age" : 1}, "$set" : {age : 40}}

Page 30: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

29

ع بی ذبل زض دطؼ ػ ب

سب ای ػب ثب ع بی شػی آقب قس ای و زض اؾبز ثىبض طفش قس اس اب ثؼضی اظی ع ب

زض دطؼ ػب ضفشبض شبیعی زاضس و ثب آب آقب ی قیNull

بآقب ػ ی وس ثطای ظب اط یه ؼػ ثب اؾبز ظیط زاقش ثبقی آبث ػا یه ثیز { "_id" : ObjectId("4ba0f0dfd22aa494fd523621"), "y" : null }

{ "_id" : ObjectId("4ba0f0dfd22aa494fd523622"), "y" : 1 }

{ "_id" : ObjectId("4ba0f148d22aa494fd523623"), "y" : 2 }

دطؼ ػی ظیط ػاة

> db.c.find({"y" : null})

{ "_id" : ObjectId("4ba0f0dfd22aa494fd523621"), "y" : null }

اؾز nullثب اضظـ yمساض ؾسی ضا ثطی طزاس و زاضای

null ػال ثط ایى مبزیطnull ضا ثطی طزاس مبزیطی و ػز ساضس ضا یع ثطیطزاس اط

دطؼ ػی ظیط ضا ضی ؼػ ی ثبال اؼب زی زاضی:

> db.c.find({"z" : null})

{ "_id" : ObjectId("4ba0f0dfd22aa494fd523621"), "y" : null }

{ "_id" : ObjectId("4ba0f0dfd22aa494fd523622"), "y" : 1 }

{ "_id" : ObjectId("4ba0f148d22aa494fd523623"), "y" : 2 }

اؾز چی ػز زاضز اظ nullحب اط ثرای ویسض ضا ػؿشؼ وی و زاضای مساض

اؾشفبز ی وی "exsist$"ػط

> db.c.find({"z" : {"$in" : [null], "$exists" : true}})

ػجبضار ظ

Page 31: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

31

mongoDB اظ وشبثرب یPerl Compatible Regular Expression (PCRE)

اؾشفبز ی وسثطای ثطضؾی ػجبضار ظ

یع ؼبظ اؾز mongoDBؼبظ اؾز زض PCREثبثطای ط ؾیشىؿی و زض

ب ی سای ػجبضار ظ ذز ضا زض دؾش ی ػبا اؾىطیذز اثشسا اشحب وی ؾذؽ زض دطؼ

اظ آب اؾشفبز وی و ای وبض ث ب اعیب ذبعط ضا زضضز زضؾشی ػجبضاسب ی ػبی ذز

زس

ؿشس ضا دیسا وی زض Joeیب joeثطای ظب ب ی ذای ی وبضثطای ضا و زاضای اؾ

ای حبز ی سای اظ یه ػجبضر ظ اؾشفبز وی و ث وچىی یب ثعضی حطف حؿبؼ

بس ظب ظیطیؿز

> db.users.find({"name" : /joe/i}) حب اط ثرای فمظ ب وبضثطای زض ػجبضار ظ ؼبظ اؾز ی یبظ یؿز iاؾشفبز اظ ف

ؿشس ضا دیسا وی وبفی ؾز ػجبضر ظ ضا ث نضر قى ظیط سهحیح joeyضا و كبث

وی> db.users.find({"name" : /joey?/i})

آ ضا اضز دبیب اثشسا چی ی سای ػجبضر ظ ضا ثب ذزـ مبیؿ وی ثسی نضر و

زاز ی وی

Page 32: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

31

> db.foo.insert({"bar" : /baz/}) > db.foo.find({"bar" : /baz/}) {

"_id" : ObjectId("4b23c3ca7525f35f94b60a2d"),

"bar" : /baz/ }

آرایه ها

دطؼ ػ ثط ضی آضای ای اظ ػبنط ثؿیبض آؾب ی ثبقس ثسی نضر و ػبنط زض آضای

ثغضی ضفشبض ی وس و ط وسا اضظقی اظ یه ویس وی ؿشس> db.food.insert({"fruit" : ["apple", "banana", "peach"]})

ؿز apple,banana,peachقب آضای ای اظ ی بی fruitزض ای ػب ویس

> db.food.find({"fruit" : "banana"})

شیؼ ی دطؼ ػی ثبال ثطكز ؾس ثبال اؾز

ظیط یؿز زلز زاقش ثبقی و ؾس ثبال ثطاثط ثب ؾس غیطلبی

{"fruit" : "apple‖,"fruit" : "banana", "fruit" : "peach"}

$all

اؾشفبز ی all$ػبنط ثیف اظ یه ػسز ضا ثب مبیؿ وی اظ ػطاط ثرای آضای بیی ثب

بیی

فطو ویس ؼػ ی ظیط ضا زاضی> db.food.insert({"_id" : 1, "fruit" : ["apple", "banana", "peach"]})

> db.food.insert({"_id" : 2, "fruit" : ["apple", "kumquat", "orange"]})

> db.food.insert({"_id" : 3, "fruit" : ["cherry", "banana", "apple"]})

ؿشس apple bananaب ث زجب اؾبزی ؿشی و زاضای ز ػهط > db.food.find({fruit : {$all : ["apple", "banana"]}})

{"_id" : 1, "fruit" : ["apple", "banana", "peach"]}

{"_id" : 3, "fruit" : ["cherry", "banana", "apple"]}

Page 33: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

32

آس bananaلج اظ apple بغض و كبس ی قز سطسیت یؿز زض ؾس ا

آس اؾز bananaاؾز ی زض ؾس ز ثؼس اظ

سػ!!!{fruit : {$all : ['apple']} ;;{fruit : 'apple'}.

طزاسز ؾس ثبال ثب ثطاثطس مساض ثطاثطی ضا ثطی

ثبیس زلز زاقش ثبقی و زض دطی ػبیب سؼساز ػبنط آضای ضا ثسضؾشی اضز وی اظ و

ظیبز اضز وطز دطیع وی

> db.food.find({"fruit" : ["apple", "banana", "peach"]})

> db.food.find({"fruit" : ["apple", "banana"]})

> db.food.find({"fruit" : ["banana", "apple", "peach"]})

اط لطاض ثبقس ثطای یه ػهط ذبنی اظ آضای دطؼ ػ ثیؿی اظ ایسوؽ اؾشفبز ی بیی

key.index ثطای ظب اط ثسجب ػهط ؾ اظ آضای ؿشی ی یؿی> db.food.find({"fruit.2" : "peach"})

Page 34: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

33

$size

یه قطط وبضثطزی زض اؾشفبز اظ آضای ب قطط ثطی اساظ ی یه آضای اؾز

> db.food.find({"fruit" : {"$size" : 3}})

سطویت وی اب ی سای ثب اضبف "gt$"ب بس condition$ضا ثب زیط size$ی سای

ای وجز ضا ػجطا ویث آضای sizeوطز یه ویس

حس اضبف ی قزایه sizeطب و ب یه ػهط ث آضای اضبف ی وی ث ویس

> db.food.update({"$push" : {"fruit" : "strawberry"}, "$inc" : {"size" : 1}})

حب ی سای دطؼ ػی ظیط ضا اػطا وی

> db.food.find({"size" : {"$gt" : 3}})

$slice operator

ا ضا ثططزای commentسب 10ی ذای blog.postفطو ویس و زض ؼػ ی

اؾشفبز ی بیی slice$ثطای ای وبض اظ ػط

> db.blog.posts.findOne(criteria, {"comments" : {"$slice" : 10}})

ػهط آذط ضا ثططزای زاضی: 10ث ی سطسیت اط ثرای

> db.blog.posts.findOne(criteria, {"comments" : {"$slice" : -10}})

ثطای ثططزاس ػبنط یبی یبظ ث یه آفؿز)مغ ی قطع( سؼساز ػبنط ثطكشی زاضی

Page 35: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

34

> db.blog.posts.findOne(criteria, {"comments" : {"$slice" : [23, 10]}})

ضا ثطی طزاس 34سب 24ی یطز اظ ػهط ػهط ا ضا بزیس 23ای زؾشض

ثطای ظب ب ی زض ضز ای ػط ای اؾز و ثمی ی ویسب یع ثططزاس ی قس ىش

ای ی ظیط اؾز ضا ایؼبز وطزو حبی ویسب postsیه ؾس ثب ب

ی ظیط ثطكز زاز قس اؾز ثب اػطای دطؼ ػی شیؼ

زض ذطػی بیف زاز قسس .یع بغض و زیسی ثمی ی ویسب

Page 36: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

35

Embedded documentsدطؼ ػ ب زض

ب ز ضـ وی ػز زاضز embedded documentثطای عطح دطؼ ػ اظ

دطؼ ػ ثطی و ؾس یب دطؼ ػ ثطی یه ویس فطز

بس شب ظیط embeddedثطای ظب دطؼ ػ ثطی یه ؾس { "name" : { "first" : "masume", "last" : "ebhami" },

"age" : 22

}

ی ساس ثهضر ظیط ثبقس > db.people.find({"name" : {"first" : "masume", "last" : "ebhami"}})

ضا یع ث ؾس ذز اضبف وس زیط زؾشض middle name ثراس ویس masumeحب اط

یت ویسب یع حؿبؾیز كب ی زسچی ای ع دطؼ ػ ث سطس ثبال ػاة راس زاز

ثبثطای سطسیت ظیط ثطای ثططزاس ؾس ثبال سطسیت زضؾشی یؿز

{"last" : "Schmoe", "first" : "Joe"} ضا ح؟

ضز ظط ی سای كىالر دطؼ ػی لجی ضا ح ویثب اؾشفبز اظ ویس اضظـ

ث ظب ظیط زلز ویس> db.people.find({"name.first" : "masume", "name.last" : "ebhami"})

حب ؼػ ی ظیط ضا زض ظط ثیطیس{ "content" : "...", "comments" : [

} "author" : "joe",

"score" : 3,

Page 37: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

36

"comment" : "nice post" }, { "author" : "mary",

"score" : 6,

"comment" : "terrible post" } ] {

ی سا دطؼ ػی ظیط ضا زاقش ثبقی ظیطا ی ویس ب مبیؿ كس اس ویس زضدط ؾ

ػی ظیط یبس اؾز comment

db.blog.find({"comments" : {"author" : "joe", "score" : }"$gte" : 5}}})

ؾسی ضا و ظزسط ی سای دطؼ ػی ظیط ضا زاقش ثبقی ظیطا ای دطؼ ػچی

مساض بیف زاز قس ضا ثطی طزاس

Joe ضا اظ ؾس ز ثط ی طزاس 6 ضا اظ ؾس ا مساض

db.blog.find({"comments.author" : "joe", "comments.score" : {"$gte" : 5}})

ػی زضؾز زض ظیط بیف زاز قس اؾزدطؼ

> db.blog.find({"comments" : {"$elemMatch" : {"author" : "joe","score" : {"$gte" : 5}}}})

ای اىب ضا ی زس و حشیبر زض ؾس ذز ضا ط elemMatch$ اؾشفبز اظ ػط

زض حب مبیؿ embedded documentثسی وی ثطای ظبی و چسی ویس زض

اؾز اؾشفبز ی قز

Page 38: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

37

Page 39: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

38

Sharding

Page 40: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

39

Sharding

Sharding اقبض زاضز ث دطزاظـ اظ عطیك چسثرف وطز اعالػبر شذیط وطز ط ثرف

ای ف یع اؾشفبز ثطای سنیف زض یه بقی ػساب.زض ثؼضی الغ اظ دبضسیك ثسی

قز. ی

ثب ثرف ثرف وطز اعالػبر سیطیز شذیط ؾبظی اعالػبر ثعضي ثس یبظ ث بقی بی

ثعضي لسضسس اىب دصیط اؾز.

Shard وطز ثهضر زؾشی سمطیجب زض ثیكشط زیشبثیؽ ب اؼب ی یطز.ظبی و یه

application دبیب زاز ای ػساب اؾز و ط وسا ث حبی چسی اسهب ث ؾطضبی

عض وب ؿشم اظ ؿشس زض ای حبز ث سیطیز دیچیس ثطای شیط ؾبظی زاز بی

ب ثطی ؾطضبی شفبر چی عطح دطؼ ػب ثطی ؾطض بؾت ثطای

ظیبز زاضز. ثططزاس ػاة یبظ زاضی اجش ای قی اػطایی اؾز اب زضزؾط

mongoDB اظ عیزshard و ثؿیبضی اظ زضزؾطبی وطز ثهضر اسبسیه ثط زاض اؾز

shard وطز ضا اظ ثی ثطز اؾز AutoSharding

ث ای ؼی اؾز و ؼػ ب ث سى بی وچىشط ثب mongoزض shardingف

chunks سمؿی ی قس

ؿؤ یه ظیط ثركی اظ shardب درف ی قس و ط shardب زض ؾطاؾط chunkای

ب زاضز ػیبر mongosثبثطای ثب اؾشفبز اظ یه دطزاظـ ؿیطیبثی و و زیشبب اؾز

sharding اؼب ی یطز

ث آ ن ی applicationؿیطیبة ىب ی زاز ب ضا ی زاس ثبثطای ظبی یه

mongoDBث یه زیشبثیؽ ؼی بیف ضا بس زضذاؾز بی قز ی ساس زضذاؾز

ثسس

Page 41: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

41

اؾشفبز كس اؾز وبضثط ث shardingثب سػ ث ز قى ظیط زض یبثی و زض قى ا اظ

shardingػ mongosعض ؿشمی ث زیشبثیؽ ن اؾز اب زض قى ز ثب اؾشفبز اظ

وبضثط ثب sharding اؼب طفش اؾز و ؾیؿش زض و عضی ضفشبض ی وس و قجی ثس

دبیب زاز سؼب زاضز

Page 42: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

41

وطز اؾشفبز ی وی؟ shardوی اظ

ظبی و فضبی زیؿه ثطی بقی فؼی و ثیبز-1

زاز ب زاضی ظبی و یبظ ث قش ؾطیغ-2

یه لؿز ثعضی اظ زاز بضا زض حبفظ ساضی وی ظبی و ی ذای-3

اؾشفبز shardingضا ىی ثؼسا زض نضر یبظ اظ shadingزض حمیمز ب ی سای اثشسا

وی

Shard وطز

وطز اثشسا یه ویس اظ ؼػ اشربة ی وی و ثطحؿت آ ویس زاز ب ضا shardثطای

ب زاضز shad keyػسا ی وی ای ویس

ثب یه ظب ثیكشط ث ای ضع ی دطزاظی:

ضا ساضی ی وس اقربل فطو ویس و یه ؼػ حبی اؾبز زاضی و اعالػبر

ی س اؾبی ض shardزض ای نضر یه ب ثط اؾبؼ ب اقربل ثبقس shard keyاط

آذطی G-P shardاؾبی ض و ثب shardقطع یك ضئ ساضی و یه A-Fو ثب

قطع یك ض ساضی ثى Q-Z قب اؾبی و ثب

بض ساضی ی وس ب ی ذای و آ ضا logفطو ویس و یه ؼػ زاضی و

shard وی اط ب ػshardign ضا اػطا وی ثmongoDB ثیی و اظ

timestamp ث ػاshard key اؾشفبز وس زضا حب ب فمظ یهshard ضی

احس ی ضس shardی زاز بیب زاضی ثب اضز وطز زاز ب ی آب ث یه

و زیط اضبف وی زض ای حبز ؼػ ث ز لؿز سمؿی ذاس قس shardچبچ یه

chunks ب زاضز و یهchunk حبی اؾبزی اؾز و زض ضغ اضظـshard key ؿشس

یه june 26 2010 سب -∞ثی timestampحبی اؾبز زض ضغ chunkظال زض یه

chunk حبی اؾبزjune 27 2010 اؾز∞سب +

Sharding چ سبطیطی ضی ػیبر زاضز؟

Page 43: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

42

قس یه shardی ؼػ ی سای سفبسی ثی یه end userث ػا یه

كس ثجیی shardی ؼػ

و ؾ سب قس اؾز shardفطو ویس و ؼػ اقربل ضا زاضی و ثطحؿت اؾ

shard زض ضغA سبZ و زض ایهضر دطؼ ػبی شفبر ث ضـ بی شفبر زاضی

اػطا ذاس قس

db.people.find({"name" : "Susan"}) mongos ض ؿشمی ث عای دطؼ ػ ضا ثshard حبی اؾبی قطع قس ثبQ-Z

ذاس فطؾشبز ػاة ضا ث وبضثط ثط ی طزاسdb.people.find({"name" : {"$lt" : "L"}})

طاػؼ ی قز A-F G-Pبی shardزض ایهضر ث db.people.find().sort({"email" : 1})

mongos دطؼ ػ ضا ث یshard ب ی فطؾشس ؾذؽ شبیغ ضا ثب طست ؾبظی

ازغبی ی وس ث ػا یه شیؼ ی احس ثط ی طزاس

db.people.find({"email" : "[email protected]"}) ب فطؾشبز ی قز سب chunkزض ایهضر ای دطؼ ػ ث نضر دكز ؾط ث ی

شیؼ ثططزاس قز

shrdingػیبر

ػز زاضز shardز طح ثطای ػیبر

Sharding زض اؾبؼ قب ؾ ػعء اؾز زض اضسجبط ثب ػ ی وس Shard

چی یه یه حفظ ای و ظیطؼػ بیی اظ زاز بی یه ؼػ ضا ساضی ی وس

چسی ؾطض ػز shardاط زض یه اؾزیب یه ؼػ ی اظی mongodؾطض

زاقش ثبقس ثبظ یه ؾطض انی اؾز ؾطضبی زیط یع قب ب زاز ب ؿشسMongos

ػز زاضز و زض ان یه mongoیه دطزاظـ ؿیطیبثی اؾز و زض ی سظیغ بی

زضذاؾز ؿیطیبثی ػاة بی ػؼی اؾزConfig server

Page 44: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

43

یچ mongosاؾز.چ shrd.وسا زاز زض وسا وسدیىطثسی والؾشطب ضا شذیط ی

ب ضا shardث ىبی یبظ زاضی و دیىطثسی ضا ثغض یكی شذیط ی وسچیعی

ساضی وس

یىی ظیطا Configضا اؼب ثسی زض اثشسا ؾطض ضا mongosزض اثشسا ثبیس دیىطثسی ؾطض

ث آ یبظ زاضی mongosثطای

قطع ی وی mongodؾطض لج اظ ی ػیبر اظ لجی Configثطای $ mkdir -p ~/dbs/config

$ ./mongod --dbpath ~/dbs/config --port 20000

ب ثبیز 200وی ثبیز زض ط 1و ا دیىطثسی ث فضب یب بثغ ظیبزی یبظ ساضز)فضبیی حسز

اظ اعالػبر الؼی(

و ای ػیبر یبظ زاضی و ػیبر ؿیطیبثی زض اسهبالر ضا اؼب زس mongosحب ث

وؼبؾز Config serverؿیطیبثی یبظ زضاز و ثساس $ ./mongos --port 30000 --configdb localhost:20000

shardاضبف وطز یه

اؾز mongodیه اظ shardزض حمیمز $ mkdir -p ~/dbs/shard1

$ ./mongod --dbpath ~/dbs/shard1 --port 10000

ذز ضا ث والؾشطب اضبف وی shardشه قس ای ی سای mongosحب ب ث

شه قس ای: mongosثطای اعیب اظیى ث $ ./mongo localhost:30000/admin

MongoDB shell version: 1.6.0

url: localhost:30000/admin

connecting to localhost:30000/admin

Page 45: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

44

type "help" for help

زاضی : shardثطای اضبف وطز

> db.runCommand({addshard : "localhost:10000", allowLocal : true})

{

"added" : "localhost:10000",

"ok" : true }

localhostب ضی shardای ضطضر ضا زاضز و ثیب ی وس فمظ allowLocalویس

اؾز

Sharding Data

id shard_ ثط حؿت ویس fooضا زض زیشبثیؽ barفطو ویس و ی ذای ؼػ ی

فؼب ی وی fooضا ثطای زیشبثیؽ shardingزضاثشسا وی

> db.runCommand({"enablesharding" : "foo"})

Shard وطز زیشبثیؽ ؼػ ب ضا زضshard بی رشف شذیط ی وس و ثطای

shard .وطز یه ؼػ ای ػ دیكیبظ اؾز

ؼػ ضا shardcollectionث یىجبض ی سای اظ اثشسا یه ؼػ ضا ثؾی ی زؾشض

shard وی > db.runCommand({"shardcollection" : "foo.bar", "key" : {"_id" : 1}})

ذزوبض زاز .حب اط زاز اضبف وی ثهضر وطز ای id shard_حب ب ؼػ ضا ثطحؿت

بی طثع لطاض ی یطز shardزض id_ب ثب سػ ث

Page 46: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

45

Aggregation

Page 47: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

46

mongoDB اثعاضبی ظیبزی ضا ثطایaggregation فطا ؾبذش اؾز اظ قبضـ ؾبز

mapreduceاؾبز زض یه ؼػ طفش سب آبیع زاز بی دیچیس ثب اؾشفبز اظ

Count

و سؼساز اؾبز زض یه ؼػ ضا ثطی طزاس aggregationؾبز سطی اثعاض > db.foo.count()

0

> db.foo.insert({"x" : 1})

> db.foo.count()

1

ػی ضغ ؾبیع یه ؼػ ػیبر قبضـ ثب ؾطػز ظیبزی اؼب ی یطز

ثسی سب شیؼ ضا ثططزاس countچی ی سای یه دطؼ ػ ث

> db.foo.insert({"x" : 2})

> db.foo.count()

1

> db.foo.count({"x" : 1})

1

Distinct

و ثبیس یه ؼػ زاز قس ضا ثطی طزاس ای زؾشض ی مساض بی شفبر ثطای ویس

بس ظب ظیط: یه ویس ث ػا ضزی ث ای زؾشض زاز قز> db.runCommand({"distinct" : "people", "key" : "age"})

فطو ویس ؼػ ی ظیط ضا ثب اؾبز زاز قس زاضی{"name" : "Ada", "age" : 23}

Page 48: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

47

{"name" : "ashli", "age" : 30}

{"name" : "john", "age" : 25}

{"name" : "Andy", "age" : 30}

حب شیؼ ی زؾشض ثبال ثطی ای ؼػ ث لطاض ظیط اؾز

> db.runCommand({"distinct" : "people", "key" : "age"})

{"values" : [20, 35, 60], "ok" : 1}

Group

groupقجی mongoزض groupبیی زاق ثبقیس ثبیس ثی و آق sqlاط ثب ظثب بی

by زضsql اؾز.

Group ای اػبظ ضا ی زس و ؼػ ی ذز ضا ث ظیططبی ػساب ثطحؿت مساض

ویس اشربثی سمؿی ثسی وی

نجح 10 ثطای ظب فطو ویس و ب ؾبیشی زاضی و ػزی ضا ط چس زلیم یىجبض اظ ؾبػز

ػهط طجز ی وس اض آذطی ػزی ضا ساضی ی وس 4سب

ضظ لج ضا كبس وی ثب ط ثسی وبض ب 30ػزی زض آذطی حب اط ثرای مساض

آؾب سط ی قز {"day" : "2010/10/03", "time" : "10/3/2010 03:57:01 GMT-400", "price" : 4.23}

{"day" : "2010/10/04", "time" : "10/4/2010 11:28:39 GMT-400", "price" : 4.27}

{"day" : "2010/10/03", "time" : "10/3/2010 05:00:23 GMT-400", "price" : 4.10}

{"day" : "2010/10/06", "time" : "10/6/2010 05:27:58 GMT-400", "price" : 4.30}

{"day" : "2010/10/04", "time" : "10/4/2010 08:34:50 GMT-400", "price" : 4.01}

بس ظیط ب ی ذای یؿز آذطی ػزی ط ضظ ضا كبس وی[

{"time" : "10/3/2010 05:00:23 GMT-400", "price" : 4.10},

{"time" : "10/4/2010 11:28:39 GMT-400", "price" : 4.27},

{"time" : "10/6/2010 05:27:58 GMT-400", "price" : 4.30}

]

ثطای ای وبض وبفی ؾز و ؼػ ی ذز ضا ثطحؿت ضظ ط ثسی وی زض ط ط آذطی

ؾس ضا دیسا وی

> db.runCommand({"group" : {

Page 49: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

48

... "ns" : "stocks",

... "key" : "day",

... "initial" : {"time" : 0},

... "$reduce" : function(doc, prev) {

... if (doc.time > prev.time) {

... prev.price = doc.price;

... prev.time = doc.time;

... }

... }}}) حب ث ثطضؾی ثرف بی ای زؾشض ی دطزاظی

"ns" : "stocks", ؼػ ی ضز ظط ثطای ط ثسی ضا كرم ی وس

―key‖:‖day‖ لغؼب لطاض اؾز ثطحؿت آ ط ثسی اؼب یطز ضا كرم ی وس.ویسی و

ؿشس زض یه ط لطاض ذاس طفززض ای ظب اؾبزض و زاضای ضظ یىؿب

"initial" : {"time" : 0}

"$reduce" : function(doc, prev) { ... } ای سبثغ ثطای ط ؾس زض ؼػ یىجبض فطاذای ی قز و ؾس ػبضی ضا ی یطز یه

اجبق ثطای اؾبز اؾز و زض ای ظب ب سبضید ؾس ػبضی ضا ثب سبضید اجبق مبیؿ ی وی

و زض نضر آذطی ؾس ثز ظب ػزی ضا زض اجبق شذیط ی وی .سػ زاقش ثبقیس

ط یه اجبق ػساب ذای زاقزثطای ط

ضظ سقش ثبقس دؽ یبظ ث قطعی زاضی و 30زض اثشسا فشی و ی ذای شبیغ طثط ث

ای كى ضا ح وس

> db.runCommand({"group" : { ... "ns" : "stocks", ... "key" : "day",

... "initial" : {"time" : 0},

... "$reduce" : function(doc, prev) {

Page 50: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

49

... if (doc.time > prev.time) {

... prev.price = doc.price;

... prev.time = doc.time;

... }},

... "condition" : {"day" : {"$gt" : "2010/09/30"}}

... }})

ط ط قب ویسی ضظ ضا ی آضز و ط وسا یه ط ؿشس 30زؾشض ثبال آضای ای اظ

prev مساض (day‖ : string―اؾز و ثطحؿت آ ط ثسی قس اؾز ظال زض ای ظب )

ط ثسی ی day:nullجبقس زض یه ط ثب ػهط dayبیی.اط ثؼضی اؾبز قب ویس

زض لؿز ضا day" : {"$exists" : true}" طای حصف ای ط ب وبفی ؾز و و ث قس

قطط ثیؿی

سؼساز اؾبز اؾشفبز قس سؼساز مساضبی شفبر ثطای ویس ضا ثط ی groupو زؾشض

طزاس> db.runCommand({"group" : {...}}) { "retval" : [ {

"day" : "2010/10/04",

"time" : "Mon Oct 04 2010 11:28:39 GMT-0400 (EST)"

"price" : 4.27

}, ... ],

"count" : 734,

"keys" : 30,

"ok" : 1

}

اؾشفبز ی Finalizerچبچ ثرای شیؼ ثبظكشی ثهضسی و ذزب ی ذای ثبقس اظ

بییFinalizer

Page 51: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

51

Finalizer ثطای و وطز حؼ اعالػبر ذطػی اظ ؾز زیشب ثیؽ ث ؾز وبضثط اؾشفبز ی

ی اؾز ظیطا ثطای ذطػی ط ثسی یبظ ث یه لبجی قس و ای یه یػی ذیی

بؾجی اظ ػاة زیشبثیؽ زاضی

ثطای كب زاز ای اط ثب یه ظب قطع ی وی

زض ای ظب ب ثالی زاضی و زاضای دؿز بیی ثب س بی شفبر اؾز حب ی ذای

هضر یبظ زاضی و ط ثسی ثط حؿت ضظ حجة سطی س زض ط ضظ ضا كبس بیی زض ای

زاقش ثبقی و مساض س ب ضا ساضی وس> db.posts.group({ ... "key" : {"tags" : true}, ... "initial" : {"tags" : {}}, ... "$reduce" : function(doc, prev) { ... for (i in doc.tags) { ... if (doc.tags[i] in prev.tags) { ... prev.tags[doc.tags[i]]++; ... } else {

... prev.tags[doc.tags[i]] = 1;

... }

... }

... }}) و شیؼ ای قجی ظیط ضا ثط ی طزاس

[

{"day" : "2010/01/12", "tags" : {"nosql" : 4, "winter" : 10, "sledding" : 2}},

{"day" : "2010/01/13", "tags" : {"soda" : 5, "php" : 2}},

{"day" : "2010/01/14", "tags" : {"python" : 6, "winter" : 4, "nosql": 15}}

] اب فطؾشبز ی س ب ث یسا ی ویاض ثعضشطی س ضا زض ؾز وبضثط دؾذؽ ب مس

چبض چیؿز؟ ؾطثبض ظیبزی اؾز ؾز وبضثط زاضای

اػطا ی لج اظ فطؾشبز قس ث ؾز وبضثط زضای سبثؼی اؾز و ضی ط ط finalizerیه

و زض ای حبز ذطػی ب طست ثس یچ اضبفبسی اؾز قز> db.runCommand({"group" : { ... "ns" : "posts", ... "key" : {"tags" : true}, ... "initial" : {"tags" : {}},

Page 52: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

51

... "$reduce" : function(doc, prev) {

... for (i in doc.tags) {

... if (doc.tags[i] in prev.tags) {

... prev.tags[doc.tags[i]]++;

... } else {

... prev.tags[doc.tags[i]] = 1;

... }

... },

... "finalize" : function(prev) {

... var mostPopular = 0;

... for (i in prev.tags) {

... if (prev.tags[i] > mostPopular) {

... prev.tag = i;

... mostPopular = prev.tags[i];

... }

... }

... delete prev.tags

... }}})

حب فمظ شبیؼی ثطؿز زاز ی قز و ظز یبظ ب اؾز[

{"day" : "2010/01/12", "tag" : "winter"},

{"day" : "2010/01/13", "tag" : "soda"},

{"day" : "2010/01/14", "tag" : "nosql"}

]

اؾشفبز اظ سبثغ ث ػا ویس

زض ط ثسی ی سای ثؼبی ایى اظ یه ویس ث ػا ؼیبضی ثطای ط ثسی اؾشفبز وی

keyاظ سبثغ بی زرای ثطای ط ثسی اؾشفبز وی زض ای حبز فمظ وبفی ؾز ثؼبی

ضا ثیؿی بس زؾشض ظیط keyfو ی

> db.posts.group({"ns" : "posts", ... "$keyf" : function(x) { return x.category.toLowerCase(); }, ... "initializer" : ... })

Page 53: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

52

MapReduce countاؾز و ثیكشط اظ ط وبضی ضا و ی سای ثب aggregationیىی اظ اثعاضبی

group distinct اؼب ثسی ثبmapreduce یع اؼب ثسی

ی قز ػیبر اظی ؾبظی ثطی چسی بقی یع aggregationچی ثب ای ضـ

اؼب ثیطز

و زض ای نضر ؿب ث چس لؿز سمؿی ی قز ط لؿز زض یه بقی ػساب

زض ط بقی ػاة ب ثب ازغب ی قس ث ػا ؿب ح ی قز دؽ اظ اسب وبض

یه ػاة بیی ثبظؿز زاز ی قز

و ای اثعاض قب ز ب اؾز

ب یه ػیبسی زض ط ؾس اؼب ی زس و ای mapب زاضز و mapب ا: ب

ضا ثططزاس xػیبر ی ساس وبضی ضا اؼب سس یب مساضی بس

Page 54: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

53

Indexing

Page 55: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

54

Page 56: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

55

ایسوؽ صاضی زض زی ثی

ثطای ػؿش زض یه وبىك اظ زیشبثیؽ ذزب زؾشض مبث ضا ی یؿی ظال:

Db.users.find({name:’ada’})

ای ػ ظبجط اؾز ظیطا سب ثب زؾشض ثبال یظض آزا ضا زض ثی وبىك یظض ػؿشؼ ی وی

اؾبز زاذ وبىك یظض ضا ػؿشؼ ی وس

كى؟

ظبجط ثز ای ػ ػؿشؼ ثی جز ای وبض فی ثب ایسوؽ صاضی ضا ثػز آضز

Page 57: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

56

ثب اؾشفبز اظ ای ضـ ػ ػؿشؼی ثی ای ضا ثطای دیسا وطز یه ضز ذبل ثط دبی ی

ی اؼب ی زیایسوؽ صاض

ث شب ظیط سػ فطبییس

> db.users.find({name: "user101"}).explain()

{ "cursor" : "BasicCursor",

"nscanned" : 1000000,

"nscannedObjects" : 1000000,

"n" : 1,

"millis" : 721,

"nYields" : 0,

"nChunkSkips" : 0,

"isMultiKey" : false, "indexOnly" : false, "indexBounds" : { } }

اعالػبر طثط ث ای ()explainای یه ػ ػؿشؼی ؾبز اؾز و ثب اؾشفبز اظ شس

اؾز falseػؿشؼ ضا ثسؾز آضز ای بغض و ی ثییس زض ای ضـ مساض ایسوؽ ثطاثط

Db.users.ensureIndex({―name‖:1})

كب 1اؼب زاز ای ػؼسز nameض ثبال ػ ایسوؽ صاضی ضا ثطی ثب اؾشفبز اظ زؾش

كب زس ی عی ثز آ اؾز 1-زس ی ایسوؽ صاضی ثط حؿت نؼزی اؾز ػسز

ثبض زیط ػ ػؿشؼ ضا اؼب ی زی

> db.users.find({"username" : "user101"}).explain()

Page 58: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

57

{

"cursor" : "BtreeCursor username_1",

"nscanned" : 1,

"nscannedObjects" : 1,

"n" : 1,

"millis" : 3,

"nYields" : 0,

"nChunkSkips" : 0,

"isMultiKey" : false, "indexOnly" : false, "indexBounds" : { "username" : [ [

"user101",

"user101"

] ] } {

ثطاثط یه اؾز یؼی فمظ یه ضز scanاؾز مساض trueزض ای ثبض مساض ایسوؽ ثطاثط

ثطضؾی قس اؾز یبظی ث ػؿشؼی سب اؾبز زاذ وبىك یظض جز اؾز

زض حمیمز ایسوؽ سب اؾبز زاذ وبىك ضا ثط اؾبؼ دبضاشط ایسوؽ قس طست ی وس

ػ طست ؾبظی اثشسا ثطاؾبؼ ؾ ؾذؽ ثطاؾبؼ ب اؼب ی یطزثطای ظب زض زؾشض ظیط

> db.users.find().sort({"age" : 1, "name" : 1})

اب ثطای ثجز ای ػ ی سای یه ایسوؽ صاضی ث نضر ظیط ضا زاقش ثبقی

> db.users.ensureIndex({"age" : 1, "username" : 1})

فش ی قز compound indexث ای ضـ ایسوؽ صاضی آضای ب

Page 59: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

58

زض ای ع اظ ایسوؽ ساضی ی سای اؾبز سزضس ضا یع ایسوؽ صاضی وی ظال:{ "username" : "ada", "loc" : {

"ip" : "1.2.3.4",

"city" : "tbz", "state" : "sh" } }

cityزاضای ؾ فیس زیط اؾز اط ثرای ػ ایسوؽ ضا ثطی locبغض و ی ثییس

اؼب ثسی زاضی:

> db.users.ensureIndex({"loc.city" : 1})

زاضز ثطای ظب ظبی و usernameاب سفبر بیی ثب ایسوؽ صاضی فیس بیی بس

loc.city ضا ایسوؽ ی وی ثطای قش دطؼ ػیی بس

db.users.find({"loc" : {"ip" : "123.456.789.000", "city" :

"Shelbyville","state" : "NY"}}})) ثبیس ی فیس بی ظیط ؾس ضا ث سطسیت زضؾز اضز وی ؼبظ ث قش دطؼ ػیی

بس ظیط یؿشی

db.users.find({"loc.city" : "Shelbyville"}).

Unique index

سوؽ صاضی یه ایسوؽ صاضی یىشب اؾز و ثطاؾبؼ آ فیس ػبضی اظ دصیطفش ای ای

مساضبی ؿب ػیطی ی وس

> db.users.ensureIndex({"username" : 1}, {"unique" : true})

ثطای ظب زضع زؾشض ز ثب ذغب اػ اؾز

Page 60: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

59

> db.users.insert({username: "bob"}) > db.users.insert({username: "bob"})

E11000 duplicate key error index: test.users.$username_1 dup

key: { : "bob" }

اظ ثی ثطز ایسوؽ ضز ظط

ثب اؾشفبز اظ زؾشض ظیط ی سا یه ایسوؽ ضا زض ؼػ اظ ثی ثطز

> db.people.dropIndex("ب ایسوؽ")

{ "nIndexesWas" : 3, "ok" : 1 }

Sparse index

ا ثبیس ث ای ف ثب زیشبثیؽ بی ضاثغ ای وبال شفبر اؾز یؼی ثب ای ایسوؽ صاضی

یه ایسوؽ صاضی ؼی اؾز و یبظی یؿز فیس زض ی اؾبز ػز زاقش ثبق

ثطای ظب: سو یىشب ثبق زیبظی یؿ

> db.ensureIndex({"email" : 1}, {"unique" : true, "sparse" : true})

حب ث ظب ظیط سػ ویس

ؼػ ظیط زاضای اؾبز ظیط اؾز

> db.foo.find()

{ "_id" : 0 }

{ "_id" : 1, "x" : 1 }

{ "_id" : 2, "x" : 2 }

{ "_id" : 3, "x" : 3 }

حب شیؼ زؾشض ظیط ثس ایسوؽ صاضی :

Page 61: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

61

> db.foo.find({"x" : {"$ne" : 2}})

{ "_id" : 0 }

{ "_id" : 1, "x" : 1 }

{ "_id" : 3, "x" : 3 }

ضا اؼب ثسی شیؼ ظیط اؾز! sparseایسوؽ صاضی xاط ایجبض ضی

> db.foo.find({"x" : {"$ne" : 2}})

{ "_id" : 1, "x" : 1 }

{ "_id" : 3, "x" : 3 }

زض ؾس ا جز اؾز ای ؾس قب ایسوؽ صاضی كس زض xزض شیؼ ثبال ث زی ایى

ػاة شیؼ ی ػؿشؼ یبس اؾز دؽ ث ای ىش سػ زاقش ثبقیس

وؽ صاضی ثی ضی دطؼ ػبیب زاقش ثبقی یبظ ث سایى سؼیی وی چ یه ای

اب ثبػض افعایف وبضایی ی قز ر ثبال زاضزضب

ثطفطو ب یه دطؼ ػی ؾبز ثطی یه ویس زاضی

> db.people.find({"username" : "mark"})

ظبی و یه ویس زض دطؼ ػ اؾشفبز ی قز ثب ایسوؽ ساضی ؾطػز دطؼ ػ ضا ثبال

ایؼبز وی ثطای ای وبض اظ usernameزض ای ظب ی ذای یه ایسوؽ ثطی .ی ثطی

اؾشفبز ی بیی ensureIndexشس > db.people.ensureIndex({"username" : 1})

یه ایسوؽ فمظ ثطای یىجبض ضی ط ؼػ ایؼبز ی قز.اط ثرای ب ایسوؽ ضا ثطای

ثبض زیط ایؼبز وی یچ اسفبلی ی افشس

یؼشط اػطا قزایسوؽ ضی یه ویس ثبػض ی قز و دطؼ ػب ثطی آ ویس ؾط

حشی اط قب ویس ایسوؽ قس ثبقساب دطؼ ػبی زیط ضا ؾطیغ ی وس

ثطای ظب ثب ایسوؽ صاضی ػبضی ثطی دطؼ ػی ظیط سبطیطی ضخ ی زس> db.people.find({"date" : date1}).sort({"date" : 1, "username" : 1})

Page 62: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

61

ثبیس ایسوؽ صاضی ویس بی اؾشفبز قس زض دطؼ ػیه لب وی ای اؾز و ی

ایسوؽ صاضی date username قس ثطای ظب ثبیس زض دطؼ ػی ثبال طز ویس

قس

> db.ensureIndex({"date" : 1, "username" : 1})

صاضی ویادط ثیكشط اظ یه ویس زاقش ثبقی زض آهضر ثبیس اشربة زضؾشی ثطای ایسوؽ

ثطای ظب ؼػ ی ظیط ضا زاضی { "_id" : ..., "username" : "smith", "age" : 48, "user_id" : 0 }

{ "_id" : ..., "username" : "smith", "age" : 30, "user_id" : 1 }

{ "_id" : ..., "username" : "john", "age" : 36, "user_id" : 2 }

{ "_id" : ..., "username" : "john", "age" : 18, "user_id" : 3 }

{ "_id" : ..., "username" : "joe", "age" : 36, "user_id" : 4 }

{ "_id" : ..., "username" : "john", "age" : 7, "user_id" : 5 }

{ "_id" : ..., "username" : "simon", "age" : 3, "user_id" : 6 }

{ "_id" : ..., "username" : "joe", "age" : 27, "user_id" : 7 }

{ "_id" : ..., "username" : "jacob", "age" : 17, "user_id" : 8 }

{ "_id" : ..., "username" : "sally", "age" : 52, "user_id" : 9 }

{ "_id" : ..., "username" : "simon", "age" : 59, "user_id" : 10 }

ایسوؽ صاضی وی و .{username" : 1, "age" : -1"}حب ی ذای ثط حؿت

شبیغ ظیط ثطكز زاز ی قز

{ "_id" : ..., "username" : "jacob", "age" : 17, "user_id" : 8 }

{ "_id" : ..., "username" : "joe", "age" : 36, "user_id" : 4 }

66 | Chapter 5: Indexing

{ "_id" : ..., "username" : "joe", "age" : 27, "user_id" : 7 }

{ "_id" : ..., "username" : "john", "age" : 36, "user_id" : 2 }

{ "_id" : ..., "username" : "john", "age" : 18, "user_id" : 3 }

{ "_id" : ..., "username" : "john", "age" : 7, "user_id" : 5 }

{ "_id" : ..., "username" : "sally", "age" : 52, "user_id" : 9 }

{ "_id" : ..., "username" : "simon", "age" : 59, "user_id" : 10 }

Page 63: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

62

{ "_id" : ..., "username" : "simon", "age" : 3, "user_id" : 6 }

{ "_id" : ..., "username" : "smith", "age" : 48, "user_id" : 0 }

{ "_id" : ..., "username" : "smith", "age" : 30, "user_id" : 1 }

بغض و زیس ی قز ب وبضثطی ثطحؿت افعایف حطف افجب ث سطسیت لطاض ی یطز زض

اؾ بی ثطاثط ؾ ثطحؿت وبف ؾ طست قس اس

چی ثبػض سؿطیغ دطؼ ػب ضی age usernameایسوؽ صاضی ثطی

username ث عض وی اط ایسوؽ ب ضی زاضزn ویس ثبقس زض ایهضر دطؼ ػب

ظال اط ایسوؿی ثب ویسبی ثطی ط یه اظ دیكسبی ای ویسب ؾطیغ اؾز

{"a" : 1, "b" : 1, "c" : 1, ..., "z" : 1} ویس بی ظیط ضا زاقش ثبقی ط ویسی بس

: "b"}ی ثطی {a" : 1, "b" : 1, "c" :1"} ,{a" : 1, "b" : 1"} ,{a" : 1"}ایسوؽ ی قس

1}, {"a" : 1, "c" :1}, وبضثطزی ساضز ثبثطای ویس ثبیس دیكسبیی اظ ایسوؽ ب ثبقس

Page 64: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

63

MongoDسیطیز زض

Page 65: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

64

دكشیجب یطی اظ زیشبثیؽ ذز اؾز ثطای ای وبض ثب یه ظب ای وبض ثطای یه سیط زیشبثیؽ

قسی ؾطضی اؾز و دبیب ؾطضی و ث آ اضز ؾبز قطع ی وی ثب دیف فطو بی ظیط

دكشیجب زض زایطوشضی ػبضی قب فضبی وبفی ثطای دكشیجب یطی ضا زاضی ضـ اؾز زاز ب

ب ساضی permissionبز ی قز زضیطی ثب ایؼ

اثشسا یه فبی ثطای لطاض زاز دكشیجب ذز ایؼبز ی وی حب قطع ثىبض ی وی$> mkdir testmongobackup $> cd testmongobackup $> mongodump

اط شیؼ ای كبث ظیط ث زؾز آضزیس دؽ وبضس زضؾش!$ mongodump

connected to: 127.0.0.1

Tue May 21 20:52:58.639 all dbs

Tue May 21 20:52:58.640 DATABASE: blog to dump/blog

Tue May 21 20:52:58.640 blog.system.indexes to

dump/blog/system.indexes.bson

Tue May 21 20:52:58.641 4 objects

Tue May 21 20:52:58.641 blog.system.profile to

dump/blog/system.profile.bson

Tue May 21 20:52:58.645 3688 objects

Tue May 21 20:52:58.645 Metadata for blog.system.profile to

dump/blog/system.profile.metadata. json

Tue May 21 20:52:58.645 blog.authors to dump/blog/authors.bson

Tue May 21 20:52:58.646 1 objects

Tue May 21 20:52:58.646 Metadata for blog.authors to

dump/blog/authors.metadata.json

Page 66: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

65

Tue May 21 20:52:58.646 blog.posts to dump/blog/posts.bson

Tue May 21 20:52:58.686 29997 objects

Tue May 21 20:52:58.709 Metadata for blog.posts to

dump/blog/posts.metadata.json

Tue May 21 20:52:58.710 blog.tagcloud to dump/blog/tagcloud.bson

Tue May 21 20:52:58.710 1 objects

Tue May 21 20:52:58.710 Metadata for blog.tagcloud to

dump/blog/tagcloud.metadata.json ب فمظ ثرای اظ زیشبثیؽ ذز ثه آح ثیطی اط ضی ؾطض چسی زیشبثیؽ ػز ثبقس

اث وبض ضا اؼب ی زی و زض ایهضر d database_name-زض ایهضر ثب زؾشض mongodump یه فسض./dump ایؼبز ی وس و حبی ثه آح زیشبثیؽ ب اؾز

اط ثرای فمظ اظ یه وبىك ثه آح ثیطی زض ایهضر زاضی$mkdir ~/backuptemp $cd ~/backuptemp $mongodump -d blog -c posts $mongodump -d blog -c tagcloud

اعالع ی زی ثطای ظب ثبال اظ وبىف mongodumpوبىك ضا ث c–و یب اؾشفبز اظ

ثه آح طفش قس اؾز و زض فسض blogزض زیشبثیؽ post tagcloudبی

backuptemp قس اؾزلطاض زاز

ثطای اعالػبر ثیكشط زض ضز ثه آح یطی وبفی اؾز وس ظیط ضا ثیؿی حشیبر ض ثطضؾی

ویسMongodump –help

Page 67: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

66

برگرداندن داده ها با استفاده از بک آپ ها

اؾشفبز ی وی mongorestoreثطای ثبظطزاس اعالػبر اظ

حب ی بی ث ای عی ثیساظی

Page 68: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

67

Page 69: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

68

ز عی ػز زاض و ثطضؾی ق ی وی

1- --drop ثب اؾشفبز اظی عی وبىك بیی ػز لج اظ ثبظیبثی ضا دبن ی

وی سب زاز ب زچبض افعی كس زض نضر اؾشفبز ىطز اظی عی زاز

سبی وبىك ب ی ثه آح طفش قس زض وبىك بی ػز فؼی لطاض ییط

2- --noobjcheck ای عی ثmongorestore ی وvalid وطز

آثؼىز ب ض لج اظ ضز ث وبىك ب بزیس ثیط

ثطای ثبظطزاس اعالػبر وبفی زؾشض یعض ضا ثب اضز وطز فبی ثه آح ضز ظط اػطا وی$cd ~/testmongobackup $mongorestore -d blog –drop

ثبظطزاس وبىك زؾشض ظیط ضا اػطا ی ویثطای

$cd ~/testmongobackup $mongorestore -d blog -c posts --drop

mongoDB سیطیز قطع وبض ثب

زاضای عی بی سیطیشی ظیبزی اؾز و ی سا آب ضا ثب اؾشفبز اظ زؾشض زی ثی

mongod –help اضز زض ظیط آس اؾز .كبس وی

--dbpath .ؿیط دیف فطو ثطای زاز فطػی ثطای زایطوشضی زاز ب اذشهبل ی زسیه ؿیط

یبظ ث زایطوشضی زاز ی ذزـ زاضز حب اط ب ؾ دطزاظـ mongodاؾز ط data/dbب/

mongod ظبی و زاقش ثبقی یبظ ث ؾ زایطوشضی ػساب زاضی.mongod اػطا ی قز

بی mongodزض زایطوشضی زاز ایؼبز ی قز و اظ دطزاظـ mongod.lock یه فبی ثب

زیط mongod.حب اط ؾؼی زاقش ثبقی زیط زض زاذ زایطوشضی ػبضی ػیطی ی وس

ضا زض ب زایطوشضی زاز اػطا وی ثب ذغبی ظیط اػ ی قی"Unable to acquire lock for lockfilepath: /data/db/mongod.lock."

--port 27017ب اذشهبل ی زس ث عض دیف فطو دضر mongodیه قبض دضر ث ؾطض

.اط ثرای و اؾشفبز اظ آ سؾظ دطزاظـ بی زیط ثؼیس اؾز ی ثبقس mongodثطای

Page 70: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

69

ضا mongodاط ثرای ضا اػطا وی یبظ ث دضر بی شفبر زاضی mongodچسی

ضی یه دضر و زض حب اؾشفبز اؾز اػطا وی ثب ذغبی ظیط اػ ی قی"Address already in use for socket: 0.0.0.0:27017"

--fork Fork وطز ؾطض اػطایmongoDB ضا ث نضر حیطر ایعی لسضسس ی بیس

--logpath ی ذطػی ب ضا ث یه فبی رهنی و ؾطیغ سط اظ ذطػی ذظ زؾشض اؾز ی

بی logب ضا ساضی ی وس log.و زض نضر جز فبیی ضا ایؼبز ی وس و فطؾشس

بی لسیی سط یع حفظ قس log.زض نضسی و ثرای لسیی سط ضا دبن ی بیس

اؾشفبز ی وی logpath–زض وبض -- logappendاظ

--config اظ یه فبی سظیبر و قب عی بی اضبفی اؾز و زض ذظ فطب یبس اؾز اؾشفبز ی

وس

دیىطثسی ثط دبی ی فبی

mongoDB اظ دیىطثسی اعالػز اظ ضی یه فبی دكشیجبی ی وس

اؾشفبز ی وی config–یب f– ثطای طفش عی بی دیىطثسی اظ یه فبی اظ زؾشض

عی بیی و زض یه فبی دیىطثسی دكشیجبی ی قس زلیمب عی بی ضز دصیطـ زض ذظ

فطب اؾز

ای یه ظب اظ یه فبی دكشیجبی اؾز# Start MongoDB as a daemon on port 5586

port = 5586

fork = true # daemonize it! logpath = mongodb.log

و ثطاثط ثب ب سظیبسی اؾز و زض ذظ فطب اؼب ی زی

ذی ػج بی ػبجی زض ضز ای فبی ب ػز زاضز :

قطع قز یه سضیح اؾز یه زؾشض #ط شی و ثب -1

Page 71: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

71

اؾز option=valueكرم وطز عی ب قجی ؾیشىؽ ثطای -2

لطاض زی trueثطاثط ای اؾز و مساض ضا fork–عی بی قجی ثطای -3

mongoDBشلف وطز

ػز زاضز و ػب سطی ضا ح اؾز و mongoDBعی بی ظیبزی ثطای شلف وطز

ضا ثفكبضی سب ؾطض ctrl,cظبی و ؾطض زض سطیب زض حب اػطاؾز ظب ویس سطویجی

اؾز killسلف وس.ضا ح زیط اؾشفبز اظ زؾشض

adminزؾشض زیط ثطای ذبـ وطز ؾطض ای اؾز و ث ػا ازی اضز زیشبثیؽ

ؾشض ظیط ضا اػطا بییثكی ز

{―shutdownServer()‖:1}

monitoringظبضر یب

ظبضر ثطی وبضایی ؾب ثز ؾطض ثطای ط سیط ؾیؿشی ایز زاضز .

زاضای ػب بیی اؾز و ای وبض ضا آؾب وطز اؾز mongoDBذقجرشب

اؾشفبز اظ نفح ی سیطیز

ث ثبالی دضر حی زضایض 1000ضی دضر httpای اؾظ ث عض دیف فطو ثطی ؾطض

mongo ب لطاض زاضز و ای نفح زاضای اعالػبر ای اظ ؾطض ب اؾز

ثطای زیس ای نفح وبفی ؾز ؾطض ضا ضق وی زض طضط ذز ثیؿی

Page 72: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

71

28017tp://localhost:ht

ضا 1000اؾشفبز وی زض قبض دضر ػسز دضر زضایض حی + port–چبچ اظ عی ی

ی یؿی

بغض و زض قى ظیط كبس ی قز اىببسی اظ لجی سبییس ػؿشؼ ایسوؽ صاضی

replication اعالػبسی زض ضز ؾطض ػز زاضز

ثطای ایى ثشای اؾشفبز وبی اظی نفح زاقش ثبقی یبظ ث ضق وطز دكشیجب

REST اؾز و ثب زؾشض–rest ای وبض اؼب ی یطز

ضا ضق ی وی mongodچبچ ثرای نفح ی ازی ضا ذبـ ثبقس ظب و

nohttpinterface– ی یؿی

ىش(

دضسبی زضایضب mongoDBث زضایض بی httpیس و اظ عطیك یچ ب سالـ ى

وشط ی قز mongoDBشه ثكیس.ظیطا دضسبی زضایض سب ثب دطسى ؾیی حی

http ثب زضذاؾز بی

ثیؿی ثب قش ی ظیط اػ ی طضط ذز ضا زض :27017http://localhostاط زؾشض

قی

You are trying to access MongoDB on the native driver port.

For http diagnostic access, add 1000 to the port number

Page 73: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

72

Page 74: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

73

ضؼیز بی ؾطض

اثعاض بی آبضیطی ظیبزی ثطای ضؼیز یطی زض ضز ؾطض ػز زاضز ثب قش زؾشض

serverStatus زض ذظ فطب شبیغ ظیط ضا بیف ی زس

ى اؾز ویس ب ثب سیط شفبر mongoDB ؿر ی platform)ثب سػ ث

ثبقس(

Page 75: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

74

كبس وی و ثطای jsonچی ی سای اعالػبر طثط ث ضؼیز ضا زض یه فبی

كبس ای فبی زض طضط ذز ی یؿی

)/_status28017http://localhost:(

ث ثطضؾی چس ویس ی دطزاظی

Page 76: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

75

"globalLock" "mem" "indexCounters" "misses" "hits" "background Flushing" "opcounters" "asserts"

Mongostat

ذیی لسضسس اؾز ا زاضای ىبیؿ وبضثطدؿسی ثطای وبضبی ظبضسی ساضز serverStatus اطچ

طا وطز اس و یه نفح ی وبضثط mongoDBثب mongostatیه mongoDB ذقجرشب ی سظیغ بی

دؿس ثطای ذطػی ضؼیز ؾطض زاضز

Mongostat زض طبی ضؼیز ؾطض ضا زض اعالػبر ی اظ ضؼیز ؾطض ضا زض ذطػی چبح ی وس و

اظ ضؼیز ؾطض زاقش ثبقی real-timeیه ذظ ػسیس ث ب ی زس و ثبػض ی قز ب یه زیس

,inserts/s, commands/s چبح ی قز زاضای ػبیی كبث mongostatط ؾشی و زض

vsize, % locked اؾز و زلیمب ثطاثط ثب زاز بی ػز زضserverStatus اؾز

Page 77: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

76

Security

ایز ا ثطای ط سیط ؾیؿش ای اؾز و اظ ایز ؾیؿش ذز اعیب وبفی ضا زاقش ثبقس.

زض حیغی ا ثطی بقی mongoDBای اؾز و mongoDBثشطی ضا ح ثطای وشط ایز ثب

بی ای و سابیی اسهب ثب ؾطض ضا زاضس اػطا ثكز

authentication ان

ای اىب ضا زاضز و قب وبضثطا شؼسزی ثبقس mongoDBط زیشبثیؽ زض

قس اػبظ ی اػب ذاس authenticateظبی و ایز ؾیؿش ضا فؼب ی بیی سب وبضثطا

قش ثطی زیشبثیؽ ب ضا زاضس

adminاظ یه دبیب زاز ی اذشهبنی ثب authenticationزض ثحض mongoDBالظ ث شوط اؾز و

و وبضثط ازی ث ػا یه ؾدط وبضثط زض ظط طفش ی قز اؾشفبز ی وس

وبضثط ازی ی ساس ط وبضی ثطی زیشبثیؽ بی ػز اؼب زس چی authenticationثؼس اظ

اؾز shutdown show dbsلبزض ث اؼب زؾشضاسی قجی

اثشسا الظ اؾز و یه وبضثط ازی ث ؾیؿش ذز اضبف وی فؼب وطز ایز لج اظ قطع ثحض > use admin switched to db admin > db.addUser("root", "abcd"); { "user" : "root", "readOnly" : false,

"pwd" : "1a0f1c3c3aa1d592f490a2addc559383"

} > use test switched to db test > db.addUser("test_user", "efgh"); { "user" : "test_user", "readOnly" : false,

"pwd" : "6076b96fc3fe6002c810268702646eec"

} > db.addUser("read_only", "ijkl", true); { "user" : "read_only", "readOnly" : true,

"pwd" : "f497e180c9dc0655292fee5893c162f1"

Page 78: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

77

}

زاضی testبض و كبس ی ویس یه وبضثط ازی ز وبضثط زض زیشبثیؽ

trueاؾز فمظ اػبظ ی ذاس اظ زیشبثیؽ ضا زاضز و ای وبض ثب read_onlyو یه وبضثط

وطز مساض آضب ؾ شس اؼب دصیطفش اؾز وبضثط زیط اػبظ ی قش اػبظ ی

ذاس ضا زاضز

ؾغح زؾشطؾی وبضثط ضا سؼیی وطز و ثطای addUserچی ی سا ثب فطاذای شس

وبض اثشسا ثبیس ایز فؼب ثبقسای

سب ثطای اضبف وطز وبضثط ػسیس یؿز ثى ی سا ثب آ ضع addUserىش(سبث

ثز ضا یع سغییط زاز. ای وبض ثسی نضر اؾز و وبفی ؾز شس ضا ثب read_onlyضؼیز

ب وبضثطی ضع ػسیس یب ضؼیز ػسیس فطاذای وی

فؼب وطز ایز

ضا زض ذظ فطب ی auth– جطای فؼب وطز ایز زؾشضی وی restartاثشسا ؾطض ضا

یؿی> use test switched to db test > db.test.find();

error: { "$err" : "unauthorized for db [test] lock type: -1 " }

> db.auth("read_only", "ijkl");

1

> db.test.find();

{ "_id" : ObjectId("4bb007f53e8424663ea6848a"), "x" : 1 }

> db.test.insert({"x" : 2});

unauthorized > db.auth("test_user", "efgh");

1

> db.test.insert({"x": 2});

> db.test.find();

{ "_id" : ObjectId("4bb007f53e8424663ea6848a"), "x" : 1 }

{ "_id" : ObjectId("4bb0088cbe17157d7b9cac07"), "x" : 2 }

> show dbs

Page 79: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

78

assert: assert failed : listDatabases failed:{

"assertion" : "unauthorized for db [admin] lock type: 1

", "errmsg" : "db assertion failure",

"ok" : 0

} > use admin switched to db admin > db.auth("root", "abcd");

1

> show dbs admin local test ظبی و ثطای ثبض ا ث دبیب زاز شه ی قی اػبظ ی اؼب یچ ػیبر ذاس

قش ضا ساضی

اػبظ ی اؼب وبضبی ؾبز read_onlyقس ث ػا یه وبضثط authenticateدؽ اظ

بس ػؿشؼ ضا زاضی

read_onlyظبی و لهس ضز زاز ضا زاضی ؼسزا ثب قىؿز اػ ی قی ظیطا یه وبضثط

و وبضثطی زاضای ؼظ قش اؾز ی ساس زاز بی ػسیس ضا ث test_user وبضثط ؿشی

زیشبثیؽ اضز وس

ضا اػطا وس و ای زؾشض سب سؾظ وبضثطا ازی اػطا ی show dbsاب ی ساس زؾشض

قس

authentication ح ی وبضوطز

ظبی و وبضثطا ث زیشبثیؽ ب اضبف ی قس ای وبضثطا زض لبت اؾبزی زض ؼػ ی

sysyem.users شذیط ی قس و ؾبذشبض ای اؾبز ث قى ظیط اؾز {"user" : username, "readOnly" : true, "pwd" : password hash}

اؾزب وبضثطی ضع ثطای hash یه password hashو

ثسیی اؾز و ثطای حصف یه وبضثط وبفی ؾز و ؾس ضز ظط ضا زض ؼػ ی

system.users :دبن وی بس ظیط

Page 80: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

79

> db.auth("test_user", "efgh");

1

> db.system.users.remove({"user" : "test_user"}); > db.auth("test_user", "efgh");

0

ایز ؾیؿشؾبیط الحضبر ثطای ثطلطاضی

ػز زاضز و ثبیس ث آب سػ mongoDBعی بی ظیبزی ثطای سؼیی ؾغح زؾشطؾی زض

زاقش ثبقی

ثبیس زلز وی و دطسى ؾیی اؾشفبز ی وی authenticationاظ و ظبی زض اثشسا

mongoDB ث نضر ضع قس یؿز.ثطای ای وبض ثبیس اظ وبث بیSSH ىبیؿ یب زیط

.اؾشفبز وی mongoDBثطای ضع وطز اشمبالر ثی وبضثط ؾطض بی كبث

دكز یه فبیط ا یب یه قجى ی لبث زؾشطؾی سب ثب ؾطض ثطب mongoDBیك ؾطض

ی ب ثبقس.

قب ثطی یه بقیی اؾز و اظ ثیط اػبظ زؾشطؾی زاضز زض ای حبز ثب mongoDBاط

قب ثطی mongoDBحی ث قب زاز ی قز و ipیه bindip--اؾشفبز اظ عی ی

ؿز زؾشض وبفی mongodآ اؾز.ثطای ظب ثطای شه قس اظ ؾطض ثطب س ث

mongod --bindip localhost. اؾشفبز وی

ثطای غیطفؼب وطز اػطای ػبا اؾىطیذز زض ؾز ؾطض زض ظب قطع قس زیشبثیؽ اظ زؾشض

–noscripting اؾشفبز ی وی

Page 81: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

81

دكشیجب یطی سؼیط

ؾ ضـ ثطای دكشیجب یطی زاضی mongodbزض

جب یطیدكشی)یب ب ؾیؿش سیطیز زی ثی( ثطای MMSاؾشفبز اظ -1

اؾشفبز اظ ای ؾیؿش سیطیز زاضای عی ی ثبقس

اؾشفبز اظ وذی وطز فبی ب ی زاز-2

mongodumpاؾشفبز اظ زؾشض -3

ب ث ثطضؾی ضـ ؾ ثطای دكشیجب یطی اؾشفبز ی وی

اثعاضی حجة ثطای و mongodump mongorestoreثب اؾشفبز اظ ز زؾشض

شای اظ فبی بیب دكشیجب ثیطی آ ب ضا ضیىبضی ویدكشیجب یطی اؾز ی

Page 82: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

81

Replicaton

Page 83: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

82

runزض ی ظب بیی و سب ایؼب فشی اظ س اؾشبساض سه ؾطضی اؾشفبز وطزی و ثب

زیشببی ذز ضا اضز زیشبثیؽ ی وطزی اب اؾشفبز اظی ضـ ثطای mongodوطز ؾطض

دطغ بی ثعضي ذغطبن اؾز ظیطا اظ ثی ضفش اعالػبر ؾطض ث ؼبی بثزی وب اؾز

ثطا یح ای كى ب ثبیس وذی بیی اظ زیشببی ذز ضا ضی چسی ؾطض زاقش ثبقی سب ثب

وطز اؾشفبز replicationذبنی زضیط كی . زی ثی ثطای ح ای كى اظ كى

primary secondry arbitaryی و و زاز ب ثطای ظب ضی ؾ ؾطض ثب ب بی

شذیط ی قس

حب ث زؾشض ظیط سػ ویس

$ mongo --nodb

> replicaSet = new ReplSetTest({"nodes" : 3})

Page 84: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

83

ی سای اظ replicasetزض ای زؾشض ب ؾ ز ایؼبز وطز ای ثطای ث اػطا زضآضز ای

اؾشفبز وی ثبیس اثشسا زؾشضار ظیط ضا اػطا وی mongodزؾشض

> // starts three mongod processes > replicaSet.startSet() > > // configures replication > replicaSet.initiate()

ایؼبز ی وی 31000زض طح ثؼس ای ؾطض ذز ضا ضی دضر

> conn1 = new Mongo("localhost:31000")

connection to localhost:31000

testReplSet:PRIMARY>

testReplSet:PRIMARY> primaryDB = conn1.getDB("test")

test

ایؼبز قس ثب اؾشفبز اظ زؾشض ظیط ی سایس 31000زض دضر primaryای ؾطض ثب ب

كبس ویس replicasetضؼیز ذز ضا زض

> primaryDB.isMaster() { "setName" : "testReplSet", "ismaster" : true, "secondary" : false, "hosts" : [

"wooster:31000",

"wooster:31002",

"wooster:31001"

],

"primary" : "wooster:31000",

"me" : "wooster:31000",

Page 85: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

84

"maxBsonObjectSize" : 16777216,

"localTime" : ISODate("2012-09-28T15:48:11.025Z"),

"ok" : 1

}

او ث ؾطاؽ ایؼبز زی ؾطض ذز ی ضی

> conn2 = new Mongo("localhost:31001")

connection to localhost:31001

> secondaryDB = conn2.getDB("test")

Test

ایؼبز قس حب اط ثرای دطؼ ػی ظیط ضا اؼب ثسی ثب ذغب 31001ز ز ثطی دضر

ی سای زؾشطؾی ث زاز ب زاقش ثبق secondaryاػ ی قی ظیطا ث ػا

> secondaryDB.coll.find()

error: { "$err" : "not master and slaveok=false", "code" : 13435 }

ثطای اػبظ زاز ث زؾشطؾی ای ز ث زاز ب ی سا اظ زؾشض ظیط اؾشفبز وطز

> conn2.setSlaveOk()

> secondaryDB.coll.find()

{ "_id" : ObjectId("5037cac65f3257931833902b"), "count" : 0 }

{ "_id" : ObjectId("5037cac65f3257931833902c"), "count" : 1 }

{ "_id" : ObjectId("5037cac65f3257931833902d"), "count" : 2 }

...

{ "_id" : ObjectId("5037cac65f3257931833903c"), "count" : 17 }

{ "_id" : ObjectId("5037cac65f3257931833903d"), "count" : 18 }

{ "_id" : ObjectId("5037cac65f3257931833903e"), "count" : 19 }

Type "it" for more

Page 86: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

85

> > secondaryDB.coll.count()

1000

یىجبض زیط ؾؼی زض قش یه ؾس ثب ای زاضی اب ثبظ ثب ذغب اػ یكی

> secondaryDB.coll.insert({"count" : 1001})

> secondaryDB.runCommand({"getLastError" : 1})

{ "err" : "not master",

"code" : 10058,

"n" : 0,

"lastOp" : Timestamp(0, 0),

"connectionId" : 5,

"ok" : 1

}

چطا؟

replicateاػبظ قش اظ ؾز والیز ضا ساضز سب ی ساس زیشببی secondry ز

قس ضا ثیؿس

اط ؾطض انی ذبـ ثك چ اسفبلی ی افش؟

> primaryDB.adminCommand({"shutdown" : 1})

ض ایجبض ضی ز ز اػطا ی وی سب ثجیی وی ؾطض انی اؾز؟ ismasterثبظ زؾشض

> secondaryDB.isMaster()

{ "setName" : "testReplSet", "ismaster" : true,

Page 87: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

86

"secondary" : false, "hosts" : [

"wooster:31001",

"wooster:31000",

"wooster:31002"

],

"primary" : "wooster:31001",

"me" : "wooster:31001",

"maxBsonObjectSize" : 16777216,

"localTime" : ISODate("2012-09-28T16:52:07.975Z"),

"ok" : 1

}

ػبیعی ؾطض انی secondaryزض ثبال شوط قس اؾز و ؾطض انی اظ وبض افشبز ؾطض

قس ی سای یه ؾطض انی ػسیسی ضا اضبف وی

ض شلف وی وبفی ثیؿی replicasetا ثرای ای

> replicaSet.stopSet()

Page 88: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

87

Page 89: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

88

PHP and MongoDB

اؾشفبز وی PHPزض ای فه یبز ی یطی و چغض زیشبثیؽ ذز ضا عطاحی وی اظ ؼػ ب زض

یبز ی یطی PHPضا زض insert,update,delete,modifyچی اػبی چ

mongodb phpمبیؿ ی ؼػ ب زض

keysزذیط ی قس و قب json زض فه لج یبز طفشی و اؾبز زض ؼػ ب ث فطز

values ؿشس.ای كبث ضفشبضphp زض یه آضای یassociative اؾز ثبثطای

, so it shouldn’t be too difficult to get used to this format. For example, assume a document looks like the following in the MongoDB shell: contact = ( { "First Name" : "Philip", "Last Name" : "Moran", "Address" : [ {

"Street" : "681 Hinkle Lake Road",

"Place" : "Newton",

"Postal Code" : "MA 02160",

Page 90: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

89

"Country" : "USA" } ], "E-Mail" : [ "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]" ],

"Phone" : "617-546-8428",

"Age" : 60

})

اؾز phpاؾز و قجی آضای ب زض mongodbای فطز ب ؾس زض $contact = array( "First Name" => "Philip", "Last Name" => "Moran", "Address" => array(

"Street" => "681 Hinkle Lake Road",

"Place" => "Newton",

"Postal Code" => "MA 02160",

"Country" => "USA" ) , "E-Mail" => array( "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]" ),

"Phone" => "617-546-8428",

Page 91: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

91

"Age" => 60

); اؾز php; زض >اؾز و و ):( ب ؾج ای ز ؾس قجی ؿشس سب سفبر آ ب زض ای

MongoDB Classes

چ ذبنیز GridFSوالؼ انی اؾز چی ثطای وبض ثب 4زاضای phpثطای mongodbزضایض

زیط یع اىببر زاضز.

اظ ای والؼ بی انی ثرف ی اظ زضایض زی ثی اؾز و ای والؼ ب ثب اىب اؾشفبز غی

زؾشضار ضا زض زاذ ثطب ث ب ی زس

ای والؼ بی ث قطح ظیط اؾز

MongoClient قطع وس ی اضسجبط ثب زیشبثیؽ فطا وس ی ؾطض ثطای اؼب ػیبسی بس

connect(), close(), listDBs(), selectDBs(), and selectCollection().

MongoDB: ثب زیشبثیؽ ثطای اؼب زؾشضاسی بساضسجبط createCollection(),

selectCollection(), createDBRef(), getDBRef(), drop(), and getGridFS().

• MongoCollection: ایؼبز اضسجبط ثب ؼػ ب ثطای اؼب زؾشضاسی بس as count(),

find(), findOne(), insert(), remove(), save(), and update().

• MongoCursor ػاة ایؼبز اضسجبط ثب شبیغ حبن اظ ثطكزfind ب ثطای ظب زؾشضاسی بس getNext(), count(), hint(), limit(), skip(), and sort().

Connecting and Disconnecting زیشبثیؽ ؼػ ی ذبنی اؾشفبز زض ای فه یبز ی یطی چغض اظ زضایض ثطای اسهب ث یه

وی

یه اسهب ث زی ثی ضا ایؼبز ی وی Mongoاثشسا ثب اؾشفبز اظ والؼ

زاقش ثبقی phpزؾشض ظیط كب ی زس و چغض یه اضسجبط ؾطیغ ث زیشبثیؽ ضا اظ عطیك

// Connect to the database $c = new MongoClient(); // Select the database you want to connect to, e.g contacts $c->contacts;

اؾز و ی سا ثب آ ث زیشبثیؽ ضز ظط شه ()selectDBچی زاضای سبثغ mongoوالؼ

ثكی// Connect to the database $c = new MongoClient(); // Select the database you want to connect to, e.g. contacts

Page 92: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

91

$c->selectDB("contacts"); ظب ثؼسی كب ی زس و چغض ؼػ ی ضز ظط ذز ضا ثطای وبض ضی آ اشربة وی

زاقشی زض ای ػب دبثطػبؾز ثطای ظب اط shellچی لایی و زض ب وبض وطز ثب

ؼػ ای ضا اشربة وی و ظ ػز ساضز زض ب اضز وطز زاز ث آ ؼػ ث عض ذزوبض ایؼبز

ی قز.چی اشربة وطز ؼػ ی ضز ظط بس اشربة وطز زیشبثیؽ ضز ظط اؾز ث ػجبضر

ثطای كب زاز ؼػ ضز ظط زض دطؼ ػی ذز اؾشفبز وی بس ظب ظیط (<-) اظ شیط ی سای// Connect to the database $c = new Mongo(); // Selecting the database ('contacts') and collection ('people') you want // to connect to $c->contacts->people;

ای اػبظ ضا ی زس و ؼػ ای ضا اشربة وی ثی ؼػ ب ()selectCollectionچی سبثغ

ؾییچ وی// Connect to the database $c = new Mongo(); // Selecting the database ('contacts') and collection ('people') you want // to connect to $c-> selectDB("contacts")->selectCollection("people"); لج اظ شه قس ث یه زیشبثیؽ یب ؼػ ی ذبل ب یبظ زاضی و زیشبثیؽ ؼػ ب ضا ثجیی ثطای

ای وبض اظ زؾشضار ظیط ی سا اؾشفبز وطز// Connecting to the database $c = new Mongo(); // Listing the available databases print_r($c->listDBs());

ثطای ؼػ ب یع ث ی نضر اؾز// Connecting to the database $c = new Mongo(); // Listing the available collections within the 'contacts' database print_r($c->contacts->listCollections());

اؾز و اظ آ ثطای ثؿش اضسجبط ثب ؾطض زیشبثیؽ ()cloesثغ ثب زاضای یه سب mongoچی والؼ

اؾشفبز ی وی اب اؾشفبز اظ آ ذیی الظ یع ظیطا ثؼع ضؼیز بی غیطػبزی زضایض اسهب ضا ث نضر

اسبسیه ی ثسز// Connecting to the database $c = new Mongo(); // Closing the connection $c->close();

Page 93: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

92

Insert وطز زاز ب زض زیشبثیؽ

ی سای ؾس ذز ضا ث ؼػ اضبف وی ()insertثب اؾشفبز اظ زؾشض

زض لس ا ؾس ذز ضا ث ػا یه شغیط سؼطیف ی وی ؾذؽ آ ضا اضز زیشبثیؽ ی وی

insertی وی ؾذؽ ثب اؾشفبز اظ زؾشض سؼطیف phpزض ظب ظیط ؾس ذز ضا ثب اؾشفبز اظ آضای زض

اضز زیشبثیؽ ی وی$contact = array( "First Name" => "Philip", "Last Name" => "Moran", "Address" => array(

"Street" => "681 Hinkle Lake Road",

"Place" => "Newton",

"Postal Code" => "MA 02160",

"Country" => "USA" ) , "E-Mail" => array( "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]" ),

"Phone" => "617-546-8428",

"Age" => 60

); ()insertاضز وطز زض زیشبثیؽ ثب اؾشفبز اظ زؾشض

// Connect to the database $c = new MongoClient(); // Select the collection 'people' $collection = $c->contacts->people; // Insert the document '$contact' into the people collection '$collection' $collection->insert($contact);

اؾشفبز اظ دطؼ ػ

Page 94: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

93

ثطای دطؼ ػ طفش اظ زاز بی زض زیشبثیؽ ذز اظ ػطبی دطؼ ػ اؾشفبز ی وی

*اؾشفبز وطز .ثطای ظب ثطای دیسا وطز ثط اؾبؼ عی ای زض یه ؾس س زض س ی سا اظ *// Connect to the database $c = new MongoClient(); // Select the collection 'people' from the database 'contacts' $collection = $c->contacts->people; // Use dot notation to search for a document in which the place // is set to "Newton" $address = array("Address.Place" => "Newton"); // Execute the query and store it under the $cursor variable $cursor = $collection->find($address); // For each document it finds within the collection, print the ID // and its contents while ($document = $cursor->getNext()) { print_r($document); }

Page 95: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

94

GridFS

GridFS

ب زض زیبیی ظسی ی وی و حؼ زاز ب فبی ب ذیی ػظی ؿشس شذیط وطز ای

زاز ب زض یه ؾس وبضی ثؽ زقاض اؾز وبض وطز ثب آ وبضی زقاضسط

حبال ضا ح ای كى زض زی ثی ضا ثطضؾی ی وی

GridFS یه ىبیؿ ثطای زذیط ؾبظی فبی بی ثعضي زضmongodb اؾز

Page 96: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

95

اؾز mongofilesاؾشفبز اظ gridfsؾبز سطی ضا ثطای وبض وطز ثب

Mongofiles ىببر ثطای اؾشفبز اظ فبی ب زض قب سب اgridfs اؾز بس آدز فبی

از ػؿشؼ ...ز

ضا كب ی زس Gridfsاظ فبی ؾیؿش ضز ظط ث ظب دبیی چی آدز وطز فبی

$ echo "Hello, world" > foo.txt $ ./mongofiles put foo.txt

connected to: 127.0.0.1

added file: { _id: ObjectId('4c0d2a6c3052c25545139b88'),

filename: "foo.txt", length: 13, chunkSize: 262144,

uploadDate: new Date(1275931244818),

md5: "a7966bf58e23583c9a5a4059383ff850" }

done! $ ./mongofiles list

connected to: 127.0.0.1

foo.txt 13

$ rm foo.txt $ ./mongofiles get foo.txt

connected to: 127.0.0.1

done write to: foo.txt $ cat foo.txt Hello, world

اؾشفبز وطز ای get put list بس mongofilesزض ای زؾشض ب اظ ػیبر ؾبز زض

یه یؿز اظ list اضبف وطز ای GridFsفبی ضا اظ فبی ؾیؿش طفش ای ث putو ثب

ضا اؼب ی زس putوبضی ثطػىؽ وبض getضا ك ی زس gridfsفبی بی ػز زض

ی یطز ث ؾیؿش فبی ب اضبف ی وس Gridfsیؼی فبی ضا اظ

Page 97: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

96

Mongofiles ػیبر ػؿشؼ زض چی اظ زgridfs ثطاؾبؼ ب فبی حصف فبی زض

gridfs ضا زاضا ی ثبقس

ای اؾز و فبی بی ثعضي ضا ث سى بی بی ػساب ای GridFsزضحمیمز دكز دطز ی

ضا زض ؾس ػساب ای شذیط ی وس chunk ط سجسی ی وس chunkثب

ب زض یه وبىك ذبل شذیط ی قس chunkای

اؾز id_ضا كب ی زی و بس زیط اؾبز زاضای chunkزض ظیط یه ظب اظ ؾس

{ "_id" : ObjectId("..."),

"n" : 0,

"data" : BinData("..."), "files_id" : ObjectId("...") }

:n كب زس ی لؼیز یهchunk زض فبی

:Data بیف ثبیز بی فبی زض ایchunk

Gridefs فبی ضا زض ز وبىك ثب بیchunks files شذیط ی وس

The chunks Collection

ثهضر ظیط اؾز chunksیه ؾس زض وبىك

{

"_id" : <ObjectId>,

"files_id" : <ObjectID>,

"n" : <num>,

"data" : <binary>

}

chunks._id

Page 98: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

97

آثچىز آیسی طثط ث ای ؾس اؾزchunks.files_id

.filesآثؼىز آیسی طثط ث فبی انی زض وبىك

chunks.n ها chunkدنباله ی عددی از

chunks.data

The chunk’s payload as a BSON binary type

Page 99: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

98

1ضی ی

Wire Protocol

اؾشفبز TCP/IPزؾشیبثی زاضس اظ یه دطسى ؾیی mongoDBزضایضبی و ث ؾطض

اؾز.ثطای ظب BSONی بیس و ث نضر اؾبؾی قب یه دقف ضری زض زاز بی

ثطای BSONثبیز سض زیشب ب ؼػ یؿز اؾبز 20یبظ ث insertثطای یه زؾشض

ضز ث ؼػ ی ضز ظط زاضی

Page 100: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

99

Data Files

ػز اؾز.فبی بی data/dbػال ثط ػز زیشب زایطوشضی و ثهضر دیف فطو زض

چس فبی ns.زاضز ط زیشبثیؽ قب یه فبی ػساب زیطی ثطای ط دبیب زاز ػز

زیشب اؾز و ث عض یىاذز سؼساز آ ب زض حب ؿشطـ اؾز

foo.0 foo.1 foo.2 فبی بی foo.nsحبی یه غبی ثب fooثبثطای زیشبثیؽ

غیط ی ثبقس.

ط فبی ز ثطاثط ی قز سب اساظ ی فبی بی زاز ثطای یه دبیب زاز ثسی نضر اؾز و

ی ثبیز ذز ثطؾس 2ث اساظ ی بوعی

ای ضفشبض ثبػض ی قز و زض شذیط ؾبظی زیشبثیؽ بی وچه كى ث سض ضفش فضببی

ضی زیؿه فضببی ظایس ضا ساقش ثبقی زیشبثیؽ بی ثعضي زض ىب بی عزیه

شذیط قس

mongoDB چی زیشب فبی بی ضا اظ لج ث زیشبثیؽ ب اذشهبل ی زس و ای وبض

--ثبػض وبضایی ثشط ؾیؿش ی قز و ثطای غیطفؼب وطز ای لبثیز وبفی ؾز زؾشض

noprealloc ضا اػطا وی

ظبی و فبیی دط قز نضر ی یطز.ای mongoDBاذشهبل زاز زض دكز ظی ی

زیشبفبی بی اضبفی ذبی ضا ثطای ط زیشبثیؽ mongoDBی اؾز و ؾطض ثسا ؼ

ساضی ی وس اظ اؾشفبز قس آب ثطای سرهیم زاز فضب ػیطی ی وس

Namespaces and Extents ث و اؾبزی.قز ی ؾبظبسی namespace یه لبت زض زیشبثیؽ ط ب زیشبفبی زض

زاضز ضا ذزـ ث رهل ب فضبی زاضای زاضز شؼك ؼػ یه

ی شذیط زیشبفبی اظ بی section زض زیؿه ضی زض ب فضبی ط ث طثط اعالػبر

Page 101: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

111

زاضز ب extent و قز

قس زاز اذشهبل لج اظ ی ط و زاضز ػز فبی زیشب ؾ foo زیشبثیؽ زض ظیط قى زض

فضبی چسی ث و بیی extents ث ب زیشبفبی اظ ا سبی ز.ثبقس ی ذبی ی اس

اس قس سمؿی زاضس سؼك ب

زاضز ػز ثبال قى ضز زض ػبت ی ىش چس

ضی زض اظب و ثبقس شفبر ع اظ بیی extents زاضای ساس ی ب فضبی ط

ساضز لطاض دیؾش نضر ث زیؿه

و بیی extents بی track و اؾز بی فضبی freelist$ و زس ی كب چی

زاضز ی ضا كس اؾشفبز ظیبزی ظب سر ث

ضا freelist اثشسا قز ی زاز اذشهبل ای سبظ extents ب فضبی یه ث و ظبی

وس ی ػؿشؼ ضا extents ثب بؾت فضبی یه وطز دیسا ثطای

Page 102: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

111

Page 103: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

112

Sell آشنایی با

Page 104: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

113

Page 105: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

114

ضا زض ؾطض دضر كرهی هت وطز ای mongodزض حبز ػبزی فطو ب ثطا ای اؾز و

ضز ظط ذز ضا اشربة ی وی ث اب زض نضسی و بس حبز ثبال جبقس اثشسا ؾطض دضر

/ا ن ی قی$ bin/mongo staging.example.com:20000

شه ی قی زض نضر اسهب ث زیشبثیؽ زیط اظ زؾشض ظیط اؾشفبز test ث نضر دیف فطو اثشسا ث

ی وی

$ bin/mongo localhost:27017/admin

ن ی قز admin زیشبثیؽ 27017 دضر localhostزؾشض ثبال ث ؾطض

ى زی ثی ثس اسهب ث یچ زیشبثیؿی ن ثكی اظ زؾشض ظیط اؾشفبز shellچی ی سای ث

وی$ bin/mongo --nodb

MongoDB shell version: 1.5.3

type "help" for help >

بی connectionیؿز ب ی سای اظ Database Connectionسب dbث یبز زاقش ثبقیس و

زاقش ثبقی شفبسی ث حیظ بی شفبسی و ؾطض زض آ ب لطاض زاضز

زاقش ثبقی connectionی سای چسی shardingثطای ظب ثب اؾشفبز اظ

> mongos = connect("localhost:27017")

connecting to: localhost:27017

localhost:27017

> shard0 = connect("localhost:30000")

connecting to: localhost:30000

localhost:30000

> shard1 = connect("localhost:30001")

connecting to: localhost:30001

localhost:30001

اؾشفبز وی dbث ػا شغیطبی mongos shard0 shard1ثبثطای ب ی سای اظ

Shell Utilities ی سای ث چسی ؾطض شه ثكی shellثب اؾشفبز اظ

> shard_db = connect("shard.example.com:27017/mydb")

connecting to shard.example.com:27017/mydb

Page 106: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

115

mydb >

ضا اػطا وی shellچی ی سای زؾشضار طثط ث > runProgram("echo", "Hello", "world") shell: started mongo program echo Hello world

0

> sh6487| Hello world

آ طاػؼ وی manualػز زاضز و ثبیس ث shellثؿیبضی اظ وبضثطزبی ػبت

buildInfo

{"buildInfo" : 1} زؾشضی و سؾظ ازی اػطا ی قز اعالػبسی زض ضز زی ثی ؿر ی ؾطض ؾیؿش ػب

ی زس یعثب ث ب

collStats {"collStats" : collection}

اعالػبسی زض ضز ؼػ ب ؾبیع زاز ب فضبی شذیط ؾبظی ؾبیع ایسوؽ ب زض اذشیبض ب

لطاض ی زسDistinct

{"distinct" : collection, "key": key, "query": query} دطؼ ػ ضا ث ب ی زساضظـ بی شفبر ویس بی یبفز قس زض شیؼ ی

Drop {"drop" : collection}

ی اعالػبر زض یه ؼػ ضا حصف ی وس

dropDatabase

{"dropDatabase" : 1}

ی زاز بی زض یه زیشبثیؽ ضا حصف ی وسdropIndexes

{"dropIndexes" : collection, "index" : name} ثبقس "*" ضا اظ ؼػ حصف ی وس زض نضسی و ب name ی ایسوؽ ب ثب ب

ی ایسوؽ ب ضا اظ ؼػ حصف ی وسgetLastError

{"getLastError" :1} ذغبب ؾبیط ضؼیز بی ایؼبز قس سحز آذطی ػیبر ضا كب ی زس

Page 107: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

116

> db.count.update({x : 1}, {$inc : {x : 1}}, false, true)

> db.runCommand({getLastError : 1})

{ "err" : null, "updatedExisting" : true,

"n" : 5,

"ok" : true }

زؾشض ثبال سؼساز اؾبزی ضا و سحز سبطیط آدسیز لطاض طفش اس ضا بیف ی زس

isMaster

{"isMaster" : 1} slaveاؾز یب masterؾطض ضا ثطضؾی ی وس سب ثجیس و ؾطض

listCommands

{"listCommands" : 1} یؿز زؾشضار ػز ثطی ؾطض ضا طا ثب سضیحبسی زض ضز آب ی آضز

listDatabases

{"listDatabases" : 1} ای زؾشض سؾظ ازی اػطا ی قز یؿز زیشبثیؽ ب ضا ث ب ی زس

Ping

{"ping" : 1} ی وس ای زؾشض ػاة ضا ؾطیغ ثطی طزاس حشی اط ؾطض لف قس ثبقسػز زاقش ؾطضی ضا چه

renameCollection {"renameCollection" : a, "to" : b}

ث ؼػ foo.barسغییط ی زس. ثبیس ط ز زاضای ب وب ثبقس ثطای ظب bث aب ؼػ ضا اظ

bar زض زیشبثیؽfoo اقبض ی وس

repairDatabase

{"repairDatabase" : 1} دبیب زاز ی ػبضی ضا سؼیط فكطز ی وس و ای زؾشض زاضای ظب اػطای ثبالیی اؾز

serverStatus

{"serverStatus" : 1}

Page 108: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

117

آبضبی اػطایی ثطای ؾطض ػبضی ضا بیف ی زس

Install MongoDB

Page 109: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

118

Install for 32-bit Linux

لس ا:

ثیشی یوؽ زاز ی وی 32ضا ثطای ؾیؿش ػب mongodbآذطی ضغ اظ

http://downloads.mongodb.org/linux/mongodb-linux-i686-2.5.4.tgz

ضغ زازی قب فطق زاقش ثبق ثب ضغ ثبالى

:لس ز

فبی ظیخ قس ضا اوؿشطوز ی وی

tar -zxvf mongodb-linux-i686-2.5.4.tgz

لس ؾ:

وذی وی mongodbی سای فبی اوؿشطوز قس ضا زض فبی اشربثی ذز ظال mkdir -p mongodb

cp -R -n mongodb-linux-i686-2.5.4/ mongodb

لس چبض:

ضا ث mongodbػز زض binضا اؼب ثسی و ثبیس ؿیط فبی PATHی سای سظیبر طثط ث

PATH اضبف وی

ضا ایؼبز وی.ث نضر دیف فطو زی ثی زاز ب ضا زض data directoryحب یبظ زاضی و

زض آ ػز زاضز mongodbی یؿس .اظ زؾشض ظیط زض زایطوشضی ػبضی و data/db/زایطوشضی

اؾشفبز ویسmkdir -p /data/db

زض آ ػز زاضز ی قی mongodاو ؾطض زی ثی ضا اػطا ی وی.ثطای ای وبض اضز ؾیطی و

اػطااؾز.ثب اؾشفبز اظ زض حب mongoضا اػطا ی وی.حب ؾطض طثط ث mongod زؾشض

Control+C ی سای ؾطض ضا ذبـ وی

Page 110: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

119

Install MongoDB on Windows

MongoDB forWindows زاز

آذطی ضغ اظ زی ثی ضا ثطای ؾیؿش ذز زاز ی وی -1

اوؿشطوز ی وی C فبی زاز قس ضا زض زضای -2

C:\mongodb directory ایؼبز ی وی data زض دق db دق ای زیط ثب C زض زضای dataحب یه دق ثب -3

Run MongoDB ضا اػطا ی وی mongodاثشسا ث ؿیط ظیط ی ضی زؾشض ثطای ضق وطز ؾطض

C:\cd mongodb\bin C:\mongodb\bin\mongod.exe

ی سا ؾطض ضا ذبـ وی Control+Cحب ثب اؾشفبز اظ

اؾز اؾشفبز data/db/اط ثرای اظ زایطوشضی زاز ی زیطی ثؼع زایطوشضی دیف فطو و ب

بیی ثبیس زض ب ضق وطز ؾطض زایطوشضی زاز ی ضز ظط ضا یع كرم وی

C:\mongodb\bin\mongod.exe --dbpath "d:\test\mongo db data"

زیطی ضا ثبظ وی زؾشض ظیط ضا اػطا وی cmd ثبیس یه shellثطای ن قس ث C:\mongodb\bin\mongo.exe

Page 111: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

111

Page 112: Big Data Withe MongoDB).pdf · 2014. 10. 26. · 102 ٝؾ ی ٕٝیٕض mongoDB ته٘. 4 mongoDBیفطؼٔ. 5 scale ییب٘ا ... طیبؾ بٔا زؾا mongoDB ٖبثظ ٖزٛث

111

بثغ

wowebook_Oreilly.MongoDB

.The.Definitive.Guide.Sep.20

10 – Kyle Banker — MongoDB in

Action — 2011 MongoDB-Manual