MongoDB是不夠冷靜,動態創建數據庫/集,如果我們運行類似如何MongoDB的對飛
db.store.save({a: 789});
代碼它會自動創建store
收集和添加文檔創建數據庫/集合到它。
我的JavaScript理解說,不可能調用對象的未定義屬性的方法。它應該導致某種錯誤/異常。
我很想知道幕後發生的事情,如果有任何有用的鏈接,請將我指向那些。谷歌搜索沒有多大幫助。
MongoDB是不夠冷靜,動態創建數據庫/集,如果我們運行類似如何MongoDB的對飛
db.store.save({a: 789});
代碼它會自動創建store
收集和添加文檔創建數據庫/集合到它。
我的JavaScript理解說,不可能調用對象的未定義屬性的方法。它應該導致某種錯誤/異常。
我很想知道幕後發生的事情,如果有任何有用的鏈接,請將我指向那些。谷歌搜索沒有多大幫助。
正如我在一個環境的NodeJS記得你必須做這樣的事情居然創造了紀錄:db.get('collectionName').insert({..something...});
或db.get('collectionName').save({...something...});
但你沒有得到使用集合名稱作爲屬性的分貝。
你提到的這行只在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++編寫的。
希望這有助於澄清你的問題
在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是如何實現這個功能的,但我只是在迴應,以便報告可以這樣做。
Fot的更多詳細信息,請參閱:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod
僅供參考,MongoDB 2.4+使用[V8 JavaScript引擎](http://docs.mongodb。組織/手動/釋放香/ 2.4的JavaScript /)。 – Stennie 2015-01-22 15:30:59
儘管我不知道這個問題的答案,我相信MongoDB是用C++開發的。你在JavaScript中使用的是驅動程序,這些驅動程序是用它應該使用的語言開發的(如果我錯了,有人會糾正我)。這個問題依然存在,我只是認爲這很有用。 – lascort 2015-01-21 14:35:29
Mongo是[開源](https://github.com/mongodb),所以你可以在[上述JS驅動程序](https://github.com/mongodb/node-mongodb-native)中挖掘(if你有時間)看看你是否能算出來=) – jadarnel27 2015-01-21 14:57:49