mongodb如何动态创建数据库/集合

时间:2015-01-21 09:55:16

标签: javascript mongodb

如果我们运行类似于

的代码,Mongodb足够酷,可以动态创建数据库/集合
db.store.save({a: 789});

它会自动创建store集合并向其添加文档。

我的javascript理解说,无法在db对象的未定义属性上调用方法。它应该导致某种错误/异常。

我很想知道幕后发生的事情,如果有任何有用的链接,请指点我。谷歌搜索对我没什么帮助。

2 个答案:

答案 0 :(得分:5)

在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/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod

答案 1 :(得分:2)

我记得在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 ++编写的。

希望这有助于澄清您的问题