![](/img/trans.png)
[英]how create mongoDB collection using data of another collection in same database
[英]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.