1.数据库操作
#创建 use 数据库名字(有则进入,无责创建,如果新建的数据库没数据,show dbs 是不会显示新建的数据库的) #删除 use 数据库名字 # 先切换到需要删除的库下 db.dropDatabase()
2.集合操作(表操作)
#创建
db user # user为库名
user # 这里会显示库名
db.user.insert({"name":"xy","age":18}) # 插入数据
3.数据行,文档操作


db.table1.find({name:"egon"}) # 查找名字等于egon的
db.table1.find({name:{"$ne":"egon"}}) # 查找名字不等于egon的
不等于:$ne 大于:$gt 小于:$lt 大于等于:$gte 小于等于::$lte

# SQL:and,or,not
# MongoDB:字典中逗号分隔的多个条件是and关系,"$or"的条件放到[]内,"$not"
#1、select * from db1.user where id >= 2 and id < 4;
db.user.find({'_id':{"$gte":2,"$lt":4}})
#2、select * from db1.user where id >= 2 and age < 40;
db.user.find({"_id":{"$gte":2},"age":{"$lt":40}})
#3、select * from db1.user where id >= 5 or name = "alex";
db.user.find({
"$or":[
{'_id':{"$gte":5}},
{"name":"alex"}
]
})
#4、select * from db1.user where id % 2=1;
db.user.find({'_id':{"$mod":[2,1]}})
#5、上题,取反
db.user.find({'_id':{"$not":{"$mod":[2,1]}}})
逻辑运算

# SQL:in,not in
# MongoDB:"$in","$nin"
#1、select * from db1.user where age in (20,30,31);
db.user.find({"age":{"$in":[20,30,31]}})
#2、select * from db1.user where name not in ('alex','yuanhao');
db.user.find({"name":{"$nin":['alex','yuanhao']}})

#1、查看有dancing爱好的人
db.user.find({'hobbies':'dancing'})
#2、查看既有dancing爱好又有tea爱好的人
db.user.find({
'hobbies':{
"$all":['dancing','tea']
}
})
#3、查看第4个爱好为tea的人
db.user.find({"hobbies.3":'tea'})
#4、查看所有人最后两个爱好
db.user.find({},{'hobbies':{"$slice":-2},"age":0,"_id":0,"name":0,"addr":0})
#5、查看所有人的第2个到第3个爱好
db.user.find({},{'hobbies':{"$slice":[1,2]},"age":0,"_id":0,"name":0,"addr":0})
> db.blog.find().pretty()
{
"_id" : 1,
"name" : "alex意外死亡的真相",
"comments" : [
{
"name" : "egon",
"content" : "alex是谁???",
"thumb" : 200
},
{
"name" : "wxx",
"content" : "我去,真的假的",
"thumb" : 300
},
{
"name" : "yxx",
"content" : "吃喝嫖赌抽,欠下两个亿",
"thumb" : 40
},
{
"name" : "egon",
"content" : "xxx",
"thumb" : 0
}
]
}
db.blog.find({},{'comments':{"$slice":-2}}).pretty() #查询最后两个
db.blog.find({},{'comments':{"$slice":[1,2]}}).pretty() #查询1到2

# 排序:--1代表升序,-1代表降序
db.user.find().sort({"name":1,})
db.user.find().sort({"age":-1,'_id':1}

# 分页:--limit代表取多少个document,skip代表跳过前多少个document。
db.user.find().sort({'age':1}).limit(1).skip(2)

# 获取数量
db.user.count({'age':{"$gt":30}})
--或者
db.user.find({'age':{"$gt":30}}).count()
4.修改
db.user.update({'age':20},{"name":"Wxx","hobbies_count":3}) # 覆盖式的
db.table1.update({'_id':2},{"$set":{"name":"WXX",}}) # 不覆盖
db.user.update({'_id':6},{"$set":{"name":"egon","age":18}},{"upsert":true}) # 没有匹配成功则新增一条{"upsert":true}
db.user.update({'name':"alex"},{"$unset":{"hobbies":""}}) # 删除alex的爱好,$unset
5.删除
#1、删除多个中的第一个
db.user.deleteOne({ 'age': 8 })
#2、删除国家为China的全部
db.user.deleteMany( {'addr.country': 'China'} )
#3、删除全部
db.user.deleteMany({})
4.聚合操作
如果你有数据存储在MongoDB中,你想做的可能就不仅仅是将数据提取出来那么简单了;你可能希望对数据进行分析并加以利用。MongoDB提供了以下聚合工具: #1、聚合框架 #2、MapReduce(详见MongoDB权威指南) #3、几个简单聚合命令:count、distinct和group。(详见MongoDB权威指南) #聚合框架: 可以使用多个构件创建一个管道,上一个构件的结果传给下一个构件。 这些构件包括(括号内为构件对应的操作符):筛选($match)、投射($project)、分组($group)、排序($sort)、限制($limit)、跳过($skip) 不同的管道操作符可以任意组合,重复使用

