事先已经在playground集合里面存好了文档
新建:Mongo.js:
//导入第三方包
let mongoose = require("mongoose");
//连接mongodbs数据库的自己创建的playground集合
mongoose.connect("mongodb://localhost/playgroung", { useUnifiedTopology: true,useNewUrlParser: true})
.then(value => {
console.log("数据库打开成功"); //最后导入的时候要把此句注释掉防止导出
}, reason => {
console.log("数据库打开失败"); //最后导入的时候要把此句注释掉防止导出
}
//设定集合规则,规则与创建Stu集合时的集合规则保持一致
const StuSchema = new mongoose.Schema({
age: Number,
name: String,
isDead: Boolean
})
//创建集合并应用规则
const Stu = mongoose.model('Stu', StuSchema);
//打印集合里的所有文档,默认集合里面已经存好了文档
Stu.find().then(result => console.log(JSON.stringify(result, (key, value) => {
if(key == "_id" || key == "__v") { //默认会有_id和__v属性,剔除它们
return undefind;
} else {
return value;
}
})))
介绍几个常用命令行shell命令
> mongo ## 进入mongodb数据库
> show dbs ## 查看所有数据库
> use <db> ##使用某一个数据库
> show collections ## 查看当前数据库的所有集合
在命令行中用管道将标准输入流打印到同目录下json文档中(会自动生成)
node Mongo.js > ./stu.json
在Node.js中导出
Mongo.js
let mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/playgroung", { useUnifiedTopology: true,useNewUrlParser: true})
.then(value => {
//数据库打开成功
}, reason => {
//数据库打开失败
}
const StuSchema = new mongoose.Schema({
age: Number,
name: String,
isDead: Boolean
})
const Stu = mongoose.model('Stu', StuSchema);
//添加文档作为示例
Stu.create({
age:16,
name: "lihua",
isDead: false
});
Stu.create({
age:14,
name: "wanggang",
isDead: false
});
Stu.create({
age:64,
name: "zhanglu",
isDead: false
});
Stu.create({
age:98,
name: "liming",
isDead: true
});
执行Mongo.js
> node Mongo.js
使用命令行查看:
看到了我们存入的数据,结果没有问题
当然也可以在Mongo.js文件中追加打印语句,而不使用命令行查看:
Stu.find().then(resule => console.log(result)
但是由于Stu.find().then()先于Stu.create()执行,因此第一次打印不出数据
为了输出保存为json格式的文件
追加如下方法
let mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/playgroung", { useUnifiedTopology: true,useNewUrlParser: true})
.then(value => {
//数据库打开成功
}, reason => {
//数据库打开失败
}
const StuSchema = new mongoose.Schema({
age: Number,
name: String,
isDead: Boolean
})
const Stu = mongoose.model('Stu', StuSchema);
//添加文档作为示例
Stu.create({
age:16,
name: "lihua",
isDead: false
});
Stu.create({
age:14,
name: "wanggang",
isDead: false
});
Stu.create({
age:64,
name: "zhanglu",
isDead: false
});
Stu.create({
age:98,
name: "liming",
isDead: true
});
//把js对象转为json对象并打印输出
Stu.find().then(result => console.log(JSON.stringify(result, (key, value) => {
if(key == "_id" || key == "__v") {
return undefind;
} else {
return value;
}
})));
执行:
node Mongo.js > ./stu.json
查看stu.json文件
命令行导入/导出
文件的导入也十分简单,这里先删除Stu的集合
输入:
/*
* param@ playgound:要导入到的数据库(可自动生成)
* param@ stus:要导入到的集合(可自动生成)
* param@ --jsonArray:代表导入的是json数组,如果不是对象数组(即单个对象),可以换为--file
*/
mongoimport -d playground -c stus --jsonArray ./stu.json ##导入到playground数据库的stus集合中
出现如下提示,即为成功,注意.json文件中必须是符合json的内容,不能含有其他不符合json语法的内容
文件的导出:
/*
* param@ playgound:从哪个数据库导出
* param@ stus:要导出的集合
* param@ -o:导出的位置
*/
mongoexport -d playground -c stus -o ./stu.json ##把playground数据库的stus集合导出到stu.json中
但是直接通过命令行的方式导出没有过滤方式