MongoDB的基本操作
查看数据库
show dbs;
切换数据库 如果没有对应的数据库则创建
use 数据库名;
创建集合
db.createCollection("集合名")
查看集合
show tables;
show collections;
删除集合
db.集合名.drop();
删除当前数据库
db.dropDatabase();
show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
> show databases;
admin 0.000GB
config 0.000GB
local 0.000GB
MongoDB集合数据操作(CURD)
数据添加
-
插入单条数据 db.集合名.insert(文档)
文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON -
例如:
db.resume_preview.insert({name:“张晓峰”,birthday:new ISODate(“2000-07-
01”),expectSalary:15000,gender:0,city:“bj”})
没有指定 _id 这个字段 系统会自动生成 当然我们也可以指定 _id
( _id 类型是ObjectId 类型是一个12字节 BSON 类型数据,有以下格式:
前4个字节表示时间戳 ObjectId(“对象Id字符串”).getTimestamp() 来获取
接下来的3个字节是机器标识码
紧接的两个字节由进程id组成(PID)
最后三个字节是随机数。) -
插入多条数据
db.集合名.insert([文档,文档])
数据查询
比较条件查询
db.集合名.find(条件)
逻辑条件查询
and 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件
db.集合名.find({key1:value1, key2:value2}).pretty()
or 条件
db.集合名.find({KaTeX parse error: Expected 'EOF', got '}' at position 34: … {key2:value2}]}̲).pretty() not …not:{$操作符:value}}).pretty()
db.resume_preview.find({city:"bj"})
db.resume_preview.find({expectSalary:18000})
db.resume_preview.find({expectSalary:{$eq:18000}})
db.resume_preview.find({expectSalary:{$gt:18000}})
db.resume_preview.find({expectSalary:{$lt:18000}})
db.resume_preview.find({$and:[{city:"sh",expectSalary:{$eq:20000}}]})
db.resume_preview.find({$or: [{city:"bj"},{expectSalary:{$eq:20000}}]})
db.resume_preview.find({city:{$not:{$eq:"bj"}}})
/*排序*/
db.resume_preview.find({}).sort({expectSalary:1}).pretty()
分页查询
db.集合名.find({条件}).sort({排序字段:排序方式})).skip(跳过的行数).limit(一页显示多少数据)
db.resume_preview.find({}).sort({expectSalary:1}).pretty().skip(1).limit(3)
更新
$set :设置字段值
$unset :删除指定字段
$inc:对修改的值进行自增
db.集合名.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如
s
e
t
,
set,
set,inc…)等,也可以理解为sql update中set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,MongoDB 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,用来指定mongod对写操作的回执行为比如写的行为是否需要确认。
举例:
db.集合名.update({条件},{$set:{字段名:值}},{multi:true})
writeConcern 包括以下字段:
{ w: , j: , wtimeout: }
w:指定写操作传播到的成员数量
比如:
w=1(默认):则要求得到写操作已经传播到独立的Mongod实例或副本集的primary成员的确认
w=0:则不要求确认写操作,可能会返回socket exceptions和 networking errors
w=“majority”:要求得到写操作已经传播到大多数具有存储数据具有投票的(data-bearing voting
)成员(也就是 members[n].votes 值大于0的成员)的确认
j:要求得到Mongodb的写操作已经写到硬盘日志的确认
比如:
j=true:要求得到Mongodb(w指定的实例个数)的写操作已经写到硬盘日志的确认。j=true本身并不保证
因为副本集故障而不会回滚。
wtimeout:指定write concern的时间限制,只适用于w>1的情况
wtimeout在超过指定时间后写操作会返回error,即使写操作最后执行成功,当这些写操作返回时,
MongoDB不会撤消在wtimeout时间限制之前执行成功的数据修改。
如果未指定wtimeout选项且未指定write concern级别,则写入操作将无限期阻止。 指定wtimeout值
为0等同于没有wtimeout选项。
数据删除
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参
数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值
false,则删除所有匹配条件的文档。
writeConcern :(可选)用来指定mongod对写操作的回执行为