簡體   English   中英

mongodb如何動態創建數據庫/集合

[英]How does mongodb create database/collection on the fly

如果我們運行類似於以下代碼,則Mongodb足夠強大,可以即時創建數據庫/集合

db.store.save({a: 789});

它會自動創建store集合並向其中添加文檔。

我對JavaScript的理解是,無法對db對象的未定義屬性調用方法。 它應該導致某種錯誤/異常。

我很好奇了解幕后發生的事情,如果有任何有用的鏈接,請告訴我這些。 谷歌搜索對我沒有太大幫助。

在JavaScript中,有一種方法可以定義將在調用未定義方法時執行的函數。

例:

var o = {
  __noSuchMethod__: function(id, args) { console.log(id, '(' + args.join(', ') + ')'); }
};

o.foo(1, 2, 3);
o.bar(4, 5);
o.baz();

// Output
// foo (1, 2, 3)
// bar (4, 5)
// baz ()

請注意,這是一項非標准功能,目前僅在Firefox中有效。

我不知道MongoDB如何實現此功能,但我只是為了報告可以通過這種方式完成的功能。

有關更多詳細信息,請參見: https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod

我記得在NodeJS環境中,必須執行以下操作才能實際創建記錄: db.get('collectionName').insert({..something...}); db.get('collectionName').save({...something...}); 但是您不能將集合名稱用作db的屬性。

您所提到的行僅在MongoDB shell中使用,而不是Javascript。 我猜您誤解了什么是MongoDB shell和什么是MongoDB驅動程序。

長話短說,MongoDB(驅動程序)無法訪問未定義的屬性。

編輯

回應您的評論。

MongoDB JS驅動程序的GitHub頁面幾乎指出了如何插入字段並始終使用我提到的語法: https : //github.com/mongodb/node-mongodb-native

至於您在Shell中使用的內容,很明顯您不能只在命令Shell中使用Javascript。 因此,我想我將帶您到一個可以看到MongoDB使用哪種語言的地方: http : //www.mongodb.org/第一行幾乎說它是用C ++編寫的。

希望這有助於澄清您的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM