MongoDB 入门操作手册
2018-11-05 本文已影响133人
吴佳轶
image
这次不废话了,直接上干货。
imglinux 环境搭建
MongoDB 官方提供了各种 linux 的发行版本,强烈建议你去官方下载,不要从乱七八糟的渠道下载乱七八糟的安装包。
下载地址:https://www.mongodb.com/download-center#community
安装过程(基于 Ubuntu - 16.04 - 64位)
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下载
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解压
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 将解压包拷贝到指定目录
export PATH=/usr/local/mongodb/bin:$PATH # 添加到 PATH 路径
创建数据库目录
数据库目录在安装过程中不会自动创建,需要你手动找一个你觉得合适的地方创建 data 目录。
sudo mkdir -p /data/db # 我选择创建在根目录下
划重点 :/data/db
是 MongoDB 默认的启动的数据库路径。
如果你觉得放在根目录下不爽,可以通过 --dbpath
来指定。
mongod --dbpath <其他目录> # <其他目录> 替换成你觉得爽的数据目录
MongoDB后台管理 Shell
输入命令 mongo
。
当你进入 mongoDB 后台后,它默认会链接到 test 数据库。
# mongo
MongoDB shell version: 2.6.10
connecting to: test
>
基本概念
文档
文档是 MongoDB 中数据的基本单元,理解起来很简单,就是一组数据有序的放在一起就是文档。
例如:
单键值文档 {"userName":"WuJiaYi"}
多键值文档 {"_id" : ObjectId("58097dfe7e6d64baca4847365"), "name" : "WuJiaYi", "add" : "China" }
集合
多个文档放在一起就是集合。
数据库
多个集合放在一起就是数据库。
关系如下图所示:
imageshell 部分命令表
show dbs
显示所有数据库。
> show dbs # 新创建的数据库不会显示。需要写入一些数据,才会显示。
admin (empty)
local 0.078GB
test 0.078GB
>
db
显示当前数据库。
> db
test
>
use
切换 或 创建数据库。
> use local # 如果数据库不存在,则创建数据库,否则切换到指定数据库。
switched to db local
> db
local
>
db.dropDatabase()
删除数据库。
> use test # 切换到 test 数据库
switched to db test
> db.dropDatabase() # 删除当前的数据库
{ "dropped" : "test", "ok" : 1 }
> show dbs # test 数据库被删除了
admin (empty)
local 0.078GB
>
db.createCollection("NAME")
创建集合。
> db.createCollection("test")
{ "ok" : 1 }
>
show collections
显示当前数据库的集合。
> show collections
system.indexes
wujiayi
wweeww
>
db.NAME.drop()
删除集合。
> show collections # 显示所有集合
system.indexes
wujiayi
wweeww
> db.wujiayi.drop() # 删除 wujiayi 这个集合
true
> show collections # wujiayi 集合已经被删除了
system.indexes
wweeww
>
db.COL_NAME.insert(DOC)
插入文档。
>db.col.insert({title: 'MongoDB 手册',
name: '吴佳轶',
url: 'http://www.wujiayi.vip',
add: 'Beijing',
})
db.COL_NAME.update(DOC)
更新文档。
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true}) # col是集合的名字
db.COL_NAME.remove(DOC,NUMBER)
删除文档。
>db.col.remove({'title':'MongoDB'},1) # 查找符合 title 为 MongoDB 的文档,删除一条。
WriteResult({ "nRemoved" : 1 }) # 删除了两条数据
db.COL_NAME.find().pretty()
查询所有文档。
> db.col.find().pretty() # 格式化查询所有文档
> db.col.findOne() # 查询一条数据
> db.col.find() # 非格式化查询
Node.js 连接 MongoDB
创建数据库
如果数据库不存在则创建。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/WuJiaYi";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("数据库已创建!");
db.close();
});
创建合集
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/WuJiaYi';
MongoClient.connect(url, function (err, db) {
if (err) throw err;
console.log('数据库已创建');
var dbase = db.db("WuJiaYi");
dbase.createCollection('data', function (err, res) {
if (err) throw err;
console.log("创建集合!");
db.close();
});
});
插入数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("WuJiaYi");
var myobj = { name: "吴佳轶", url: "www.wujiayi.vip" };
dbo.collection("data").insertOne(myobj, function(err, res) {
if (err) throw err;
console.log("文档插入成功");
db.close();
});
});
插入多条数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("WuJiaYi");
var myobj = [
{ name: '吴佳轶', url: 'http://www.wujiayi.vip', type: 'cn'},
{ name: '魔法世界', url: 'http://www.magicworld.vip', type: 'ch'},
{ name: '魔法学校', url: 'http://www.magicshool.vip', type: 'ch'}
];
dbo.collection("data").insertMany(myobj, function(err, res) {
if (err) throw err;
console.log("插入的文档数量为: " + res.insertedCount);
db.close();
});
});
查询数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("WuJiaYi");
dbo.collection("data"). find({}).toArray(function(err, result) { // 返回集合中所有数据
if (err) throw err;
console.log(result);
db.close();
});
});
查询指定条件的数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("WuJiaYi");
var whereStr = {"name":'吴佳轶'}; // 查询条件
dbo.collection("data").find(whereStr).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
更新数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("WuJiaYi");
var whereStr = {"name":'吴佳轶'}; // 查询条件
var updateStr = {$set: { "url" : "http://wujiayi.vip" }};
dbo.collection("data").updateOne(whereStr, updateStr, function(err, res) {
if (err) throw err;
console.log("文档更新成功");
db.close();
});
});
更新多条数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("WuJiaYi");
var whereStr = {"type":'ch'}; // 查询条件
var updateStr = {$set: { "url" : "http://www.magicworld.vip" }};
dbo.collection("data").updateMany(whereStr, updateStr, function(err, res) {
if (err) throw err;
console.log(res.result.nModified + " 条文档被更新");
db.close();
});
});
删除数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("WuJiaYi");
var whereStr = {"name":'吴佳轶'}; // 查询条件
dbo.collection("data").deleteOne(whereStr, function(err, obj) {
if (err) throw err;
console.log("文档删除成功");
db.close();
});
});
删除多条数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("WuJiaYi");
var whereStr = { type: "en" }; // 查询条件
dbo.collection("data").deleteMany(whereStr, function(err, obj) {
if (err) throw err;
console.log(obj.result.n + " 条文档被删除");
db.close();
});
});
广告时间:
微信公众号:吴佳轶同学。
未完待续... ...