【发布时间】:2016-10-22 14:54:00
【问题描述】:
来自 MySQL 的背景,我觉得 MongoDB 有点奇怪。
例如,我还没有创建数据库,但是:
mongoose.connect('mongodb://localhost/kittendb');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
// Start the application after the database connection is ready
app.listen(3000);
console.log("Listening on port 3000");
});
结果:
the kittendb is created // you'll get error in mysql
另一个:
我还没有在数据库中创建集合,但是:
var kittySchema = mongoose.Schema({
name: String
});
var Kitten = mongoose.model('Kitten', kittySchema);
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.save(function (err, fluffy) {
if (err) return console.error(err);
});
结果:
fluffy is inserted into kittens collection! // you'll get an error in mysql
mongo 控制台:
> show dbs
kittendb 0.203125GB
local 0.078125GB
> use kittendb
switched to db kittendb
> db.kittens.find()
{ "__v" : 0, "_id" : ObjectId("5768e747cf72dd364e7b2fdf"), "name" : "fluffy" }
那么 mongo 或 mongoose 是怎么回事?它到底是怎么知道将小猫保存到我没有创建的小猫收藏中的!??
我错过了什么?
【问题讨论】:
-
Mongodb 不是 mysql。将 sql 经验应用到 nosql db 是不公平的,在很多情况下会导致意想不到的结果。 The docs 明确指出集合是在第一次插入时创建的。
标签: mysql node.js mongodb mongoose