添加文档
语法:
db.集合名.insert({k1:"v1", k2:"v2"....})
注意:
(1)文档就是键值对,数据类型是BSON格式,支持的值更加丰富。
比如:db.集合名.insert({name:"bashlog", spc:{weight:100, address:"henan"}})
(2)在添加的文档里面,都有一个'_id'的键,值为对象类型。
ObjectId类型:
每个文档都有一个_id字段,并且同一集合的_id值唯一,该字段可以是任意类型的数据,默认是一个ObjectId对象。
ObjectId对象数据组成:时间戳|机器码|PID|计数器
_id的键值我们可以自己输入,但是不能重复
注意:在插入数据的时候,如果_id的值重复则会报错。
(3)可以使用js代码来完成批量插入文档。
删除文档
语法:
db.集合名.remove({条件}) # 不写条件等于删除所有文档
示例1:删除collect1集合中name等于AK3的文档
db.collect1.remove({name:"ack3"})
示例2:删除collect1集合中年龄大于25的文档
使用操作符完成
常用操作符
$lt(<), $lte(<=), $gt(>), $gte(>=), $ne(<>), $in, $nin, $or, $not, $mod(取模), $exists, $where
db.collect1.remove({age:{'$gt':25}})
更新文档
语法:
db.集合名.update({条件},{新的文档},是否新增,是否修改多条)
db.集合名.update(条件,新文档,是否新增,是否修改多条)
是否新增:如果值是1(true),则没有满足条件的就添加。
是否修改多条:若值是1(true),如果满足条件的有多个文档则都要修改
方法一:直接修改
示例:在collect2集合里面,要修改age=27的文档名称为AK48
db.collect2.update({age:27},{name:"AK48"})
注意:以上修改方式,会丢失其它的键值,因此不推荐使用。
方法二:使用修改器
示例:要修改age=25的文档名称为"big_bash_log",并且其它键值不能丢失
$inc:加一个数字
set:修改某一个字段,如果该字段不存在就增加这个字段
语法:
db.集合名.update({条件},{修改器的名称:{修改的键:修改的新值}})
修改age=12的文档,年龄增加10岁
db.collect2.update({age:12},{'$inc':{age:10}})
查询文档
语法:
db.集合名.find({条件})
示例:取出collect2集合里面的第一个文档
db.collect2.findOne()
示例:取出collect2集合里面name=bash的文档
db.collect2.find({name:"bash"})
示例:取出collect2集合中age大于11的文档
db.collect2.find({age:{'$gt':11}})
示例:取出collect2集合里面的文档,只显示name键
db.collect2.find({},{name:1}) # 1表示只显示name的键值
name=0表示,显示除了name以外的键值
示例:根据年龄的(降序|升序)来显示文档
db.集合名.find().sort({age:1}) # 根据年龄升序
db.集合名.find().sort({age:-1}) # 根据年龄降序
示例:显示collect2集合中前2个文档
db.collect2.find().limit(2)
排序并取前两个
示例:统计collect2集合中文档的个数
db.集合名.count() # 返回集合中有多少个文档