解决不是内部命令:
将mongo的地址配置到环检变量下的path:
;C:\Program Files\MongoDB\Server\3.4\bin
将mongo执行存储数据库的文件夹:mongod --dbpath d:\mongodb (文件名)
执行: mongo
基本使用:
1、导入文件中的数据
注意:需重新打开一个cmd,不可在mongo运行后使用该命令
mongoimport --db cyl --collection score --drop --file d:\data.txt
mongoimport:导入数据库命令
--db cyl:指定导入的数据库
--collection score:指定导入的集合
--drop:将集合清空后添加至数据库,省略为在原有数据基础上追加数据
--file d:\data.txt:导入的文件目录
2、列出所有数据库
show dbs
3、使用数据库
use cyl 创建也是使用 use,但创建后使用 show dbs查看没有改数据库,需要添加数据才可列出该数据库
4、查看当前所使用的数据库
db
5、删除数据库
删除只能删除当前使用的数据库,所以删除数据库前需先使用要删除的数据库
db.dropDatabase()
5、显示当前数据库下的所有集合
show collections
6、创建集合
db.collection.insert() //给集合添加数据即可创建集合
7、删除集合
db.collection.drop()
一、插入数据
插入数据时如果集合不存在,插入操作将创建集合
插入文档操作遗漏_id字段时,mongodb自动为_id生成一个ObjectId
1、db.collection.insertOne()
向集合插入单个文档 document
db.users.insertOne(
{
name: 'cyl',
age: '12',
status: 'yes'
}
)
2、db.collection.insertMany()
向集合插入多个文档 document
db.users.insertMany(
[
{name: 'cyl',age: '12',status: 'A'}
{name: 'cyl',age: '12',status: 'B'}
{name: 'cyl',age: '12',status: 'C'}
]
)
3、db.collection.insert()
向集合中插入一个或多个文档
插入一个:与insertOne一致
插入多个:与insertMany一致,添加文档数组
二、查询数据
$gt:大于、 $lt:小于、 $gte:小于或等于、 $lte:小于或等于
$ne:不等于!= 、 $eq = 、 /张/:模糊查找、 /^张/:张开头
/张$/:张结尾、 $type:类型查询
类型查询:db.collection.find({'title': {$type: 'string'}})//类型为string
模糊查找:db.collection.find({name: /张/})
排除查询:db.collection.find({age: {$ne: 12}}) // 除age为12的所有数据
- 查询数据返回指定属性字段:如查询年龄小于20的数据的name
db.collection.distinct('name',{age: {$lt: 20}})
1、db.collection.find({}) //选择集合中所有文档
2、指定查询过滤条件
db.users.find( { status: 'A'} )
db.users.find({
status: {
$in: ['P','D'] // 字段为P或者D的所有文档
}
})
3、指定 and(和) 条件
查询 status等于A 并且 age 小于 30
db.users.find(
{ status: 'A',age: { $lt: 30}}
)
4、指定 or(或) 条件
db.users.find(
{
$or: [{status: 'A'}, {age: { $lt: 30}}]
}
)
5、sort排序(1为正序,-1为倒序)
db.score.find().sort({age: 1, ...(多条件排序)})
6、取指定条数 limit
db.score.find().limit(2) // 为0时显示所有数据
7、跳过指定条数 skip
db.score,find().skip(2)
//分页查询使用skip决定从哪个位置开始
skip = (pageIndex - 1) * pageNum
8、结合使用
db.score.find().sort({age: 1}).skip(2).limit(2)
9、查询数量
db.collection.count()
db.collection.find({条件}).count()
db.collection.count({条件})
三、更新操作
1、db.collection.updateOne():更新匹配到的一个文档
db.score.update({name: '沈八'},{$set: {age: 12}}) // 修改一行
// 符合条件都修改
db.score.update({sex: '男'},{$set: {age: 12}},{multi: true})
//完整替换
db.score.update({sex: '男'},{age: 12}) 将sex 为 男的 一条数据内容替换为 age=12; // 不使用$set替换后,该条数据只有_id与age两个属性
2、db.collection.uploadMany():更新所有匹配到的文档
3、db.collection.replaceOne():最多只替换一个文档
4、db.collection.update():最多只更新或替换一个文档
四、删除操作
1、db.collection.remove({sex: '女'}) //条件删除 会删除所有符合条件数据
2、db.collection.remove({sex: '女'},{justOne: true}) //只删除一个
3、db.collection.remove({}) // 删除集合中所有的文档
五、node 操作 mongodb
1、下载mongodb模板
cnpm install mongodb --save-dev
2、引入
const mongodb = require('mongodb')
const mongoClient = mobgodb.mongoClient;
mongoClient.connect('mongodb://127.0.0.1:27017',{useNewUrlParser: true },function(err,client){
// useNewUrlParser: true 解决URL字符串解析器被抛弃的方案
// client表示 mongodb
if(err){console.log('连接数据库失败');}
client.db('cyl'); //创建数据库
db.collection('store').inserOne();// 创建集合并插入数据 或者
db.createCollection('store',function(err,res){});
})
3、find查找后对数据操作的方法
-1、pretty():让查找的数据更直观的展示
-2、toArray():将查找的数据以数组的形式展现
4、聚合管道 aggregate:
当前命令的输出结果作为下一个命令的参数
聚合框架中的几种操作:(按顺序使用)
$project:修改输入文档的结构
$match:用于过滤数据
$sort:将输入的文档排序后输出
$skip:跳转指定数量的文档
$limit:文档个数
使用左连接:$lookup
{
from: '' //左集合 要和哪个集合进行合并
localField:'' //左集合要连接的字段
foreignField:'' //外部的集合连接的字段
as:'' // 找到的信息放到该字段中(类型array)
}
5、封装一个node连接mongodb
const mongodb = require('mongodb');
const mongoClient = mongodb.MongoClient;
function _connect(cb){
mongoClient.connect("mongodb://127.0.0.1:27017",{useNewUrlParser: true},function(err,client){
cb(client.db('cyl'))
})
}
module.express.insertOne = function(coll,obj,cb){
_connect(function(db){
db.collection(coll).insertOne(obj,cb);
})
}
网友评论