從MySQL的背景來看,我發現MongoDB有點奇怪。MongoDB VS MySQL - 爲什麼mongo/mongoose會自動創建數據庫和集合?
舉例來說,我有不創建的數據庫還,但:
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
蒙戈控制檯:
> show dbs
kittendb 0.203125GB
local 0.078125GB
> use kittendb
switched to db kittendb
> db.kittens.find()
{ "__v" : 0, "_id" : ObjectId("5768e747cf72dd364e7b2fdf"), "name" : "fluffy" }
那麼,什麼是怎麼回事蒙戈或貓鼬?它究竟是如何知道將小貓拯救到小貓集合,我還沒有創建!??
我錯過了什麼?
Mongodb不是mysql.Application sql體驗到nosql db是不公平的,在許多情況下會導致意想不到的結果。 [The docs](https://docs.mongodb.com/manual/reference/method/db.collection.insert/#create-collection)明確指出集合是在第一次插入時創建的。 –