天天看點

mongo shell啟動配置檔案.mongorc.js(三)

自定義MongoDB操作函數

可以把自己寫的js代碼儲存在某個地方,讓MongoDB加載它,然後就可以在MongoDB的指令行裡操作它們。

mongodb shell預設會加載~/.mongorc.js檔案

例如以下修改了啟動提示文字、左側提示文字,增加了my_show_shards shell函數用于顯示目前sharded collection的chunks在各分片的負載情況:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

<code>//~/.mongorc.js  </code>

<code>//show at begin    </code>

<code>var</code> <code>compliment = [</code><code>"attractive"</code><code>, </code><code>"intelligent"</code><code>, </code><code>"like batman"</code><code>];    </code>

<code>var</code> <code>index = Math.floor(Math.random()*3);    </code>

<code>print(</code><code>"Hello, you're looking particularly "</code> <code>+ compliment[index] + </code><code>" today!"</code><code>);</code>

<code>//change the prompt    </code>

<code>prompt = </code><code>function</code><code>(){    </code>

<code>    </code><code>if</code> <code>(</code><code>typeof</code> <code>db == </code><code>"undefined"</code><code>) {    </code>

<code>        </code><code>return</code> <code>"(nodb)&gt; "</code><code>;    </code>

<code>    </code><code>}    </code>

<code>    </code><code>// Check the last db operation    </code>

<code>    </code><code>try</code> <code>{    </code>

<code>        </code><code>db.runCommand({getLastError: 1});    </code>

<code>    </code><code>catch</code> <code>(e) {    </code>

<code>        </code><code>print(e);    </code>

<code>    </code><code>return</code> <code>db + </code><code>"&gt; "</code><code>;    </code>

<code>}</code>

<code>//show all shard's chunks    </code>

<code>function</code> <code>my_show_shards() {    </code>

<code>    </code><code>var</code> <code>config_db = db.getSiblingDB(</code><code>"config"</code><code>);    </code>

<code>    </code><code>var</code> <code>collections = {};    </code>

<code>    </code><code>var</code> <code>shards = {};    </code>

<code>    </code><code>var</code> <code>shard_it = config_db.chunks.find().snapshot();</code>

<code>    </code><code>while</code> <code>(shard_it.hasNext()) {  </code>

<code>        </code><code>next_item = shard_it.next();    </code>

<code>        </code><code>collections[JSON.stringify(next_item[</code><code>"ns"</code><code>]).replace(/\</code><code>"/g, "</code><code>")] = 1;    </code>

<code>        </code><code>shards[JSON.stringify(next_item["</code><code>shard</code><code>"]).replace(/\"/g, "</code><code>")] = 1;    </code>

<code>    </code><code>var list_collections = [];    </code>

<code>    </code><code>var list_shards = [];    </code>

<code>    </code><code>for (item in collections) {    </code>

<code>        </code><code>list_collections.push(item);    </code>

<code>    </code><code>for (item in shards) {    </code>

<code>        </code><code>list_shards.push(item);    </code>

<code>    </code><code>}</code>

<code>    </code><code>list_collections.forEach(function(collec) {  </code>

<code>            </code><code>list_shards.forEach(function(item) {    </code>

<code>                </code><code>obj = {};    </code>

<code>                </code><code>obj["</code><code>shard</code><code>"] = item;    </code>

<code>                </code><code>obj["</code><code>ns"] = collec;    </code>

<code>                </code><code>it = config_db.chunks.find(obj);    </code>

<code>                </code><code>print(collec, item, it.count());    </code>

<code>                </code><code>})    </code>

<code>            </code><code>})    </code>

<code></code>

本文轉自UltraSQL51CTO部落格,原文連結: http://blog.51cto.com/ultrasql/1707354,如需轉載請自行聯系原作者