#1、没有指定_id则默认ObjectId,_id不能重复,且在插入后不可变#2、插入单条
user0={"name":"egon","age":10,'hobbies':['music','read','dancing'],'addr':{'country':'China','city':'BJ'}
}db.test.insert(user0)
db.test.find()#3、插入多条
user1={"_id":1,"name":"alex","age":10,'hobbies':['music','read','dancing'],'addr':{'country':'China','city':'weifang'}
}user2={"_id":2,"name":"wupeiqi","age":20,'hobbies':['music','read','run'],'addr':{'country':'China','city':'hebei'}
}user3={"_id":3,"name":"yuanhao","age":30,'hobbies':['music','drink'],'addr':{'country':'China','city':'heibei'}
}user4={"_id":4,"name":"jingliyang","age":40,'hobbies':['music','read','dancing','tea'],'addr':{'country':'China','city':'BJ'}
}user5={"_id":5,"name":"jinxin","age":50,'hobbies':['music','read',],'addr':{'country':'China','city':'henan'}
}
db.user.insertMany([user1,user2,user3,user4,user5])

单条插入与多条插入

# SQL:=,!=,>,<,>=,<=
# MongoDB:{key:value}代表什么等于什么,"$ne","$gt","$lt","gte","lte",其中"$ne"能用于所有数据类型#1、select * from db1.user where name = "alex";
db.user.find({'name':'alex'})#2、select * from db1.user where name != "alex";
db.user.find({'name':{"$ne":'alex'}})#3、select * from db1.user where id > 2;
db.user.find({'_id':{'$gt':2}})#4、select * from db1.user where id < 3;
db.user.find({'_id':{'$lt':3}})#5、select * from db1.user where id >= 2;
db.user.find({"_id":{"$gte":2,}})#6、select * from db1.user where id <= 2;
db.user.find({"_id":{"$lte":2}})

比较运算

# 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']}})

成员运算

# SQL: regexp 正则
# MongoDB: /正则表达/i#1、select * from db1.user where name regexp '^j.*?(g|n)$';
db.user.find({'name':/^j.*?(g|n)$/i})

正则匹配

#1、select name,age from db1.user where id=3;
db.user.find({'_id':3},{'_id':0,'name':1,'age':1})

取指定的字段

#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()

获取数量

#1、{'key':null} 匹配key的值为null或者没有这个key
db.t2.insert({'a':10,'b':111})
db.t2.insert({'a':20})
db.t2.insert({'b':null})> db.t2.find({"b":null})
{ "_id" : ObjectId("5a5cc2a7c1b4645aad959e5a"), "a" : 20 }
{ "_id" : ObjectId("5a5cc2a8c1b4645aad959e5b"), "b" : null }#2、查找所有
db.user.find() #等同于db.user.find({})
db.user.find().pretty()#3、查找一个,与find用法一致,只是只取匹配成功的第一个
db.user.findOne({"_id":{"$gt":3}})

杂项

update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>}
)
参数说明:对比update db1.t1 set name='EGON',sex='Male' where name='egon' and age=18;query : 相当于where条件。
update : update的对象和一些更新的操作符(如$,$inc...等,相当于set后面的
upsert : 可选,默认为false,代表如果不存在update的记录不更新也不插入,设置为true代表插入。
multi : 可选,默认为false,代表只更新找到的第一条记录,设为true,代表更新找到的全部记录。
writeConcern :可选,抛出异常的级别。更新操作是不可分割的:若两个更新同时发送,先到达服务器的先执行,然后执行另外一个,不会破坏文档。

update语法介绍

#注意:除非是删除,否则_id是始终不会变的
#1、覆盖式:
db.user.update({'age':20},{"name":"Wxx","hobbies_count":3})
是用{"_id":2,"name":"Wxx","hobbies_count":3}覆盖原来的记录#2、一种最简单的更新就是用一个新的文档完全替换匹配的文档。这适用于大规模式迁移的情况。例如
var obj=db.user.findOne({"_id":2})obj.username=obj.name+'SB'
obj.hobbies_count++
delete obj.agedb.user.update({"_id":2},obj)

覆盖式

#设置:$set

通常文档只会有一部分需要更新。可以使用原子性的更新修改器,指定对文档中的某些字段进行更新。
更新修改器是种特殊的键,用来指定复杂的更新操作,比如修改、增加后者删除#1、update db1.user set  name="WXX" where id = 2
db.user.update({'_id':2},{"$set":{"name":"WXX",}})#2、没有匹配成功则新增一条{"upsert":true}
db.user.update({'_id':6},{"$set":{"name":"egon","age":18}},{"upsert":true})#3、默认只改匹配成功的第一条,{"multi":改多条}
db.user.update({'_id':{"$gt":4}},{"$set":{"age":28}})
db.user.update({'_id':{"$gt":4}},{"$set":{"age":38}},{"multi":true})#4、修改内嵌文档,把名字为alex的人所在的地址国家改成Japan
db.user.update({'name':"alex"},{"$set":{"addr.country":"Japan"}})#5、把名字为alex的人的地2个爱好改成piao
db.user.update({'name':"alex"},{"$set":{"hobbies.1":"piao"}})#6、删除alex的爱好,$unset
db.user.update({'name':"alex"},{"$unset":{"hobbies":""}})

设置:$set

#增加和减少:$inc#1、所有人年龄增加一岁
db.user.update({},{"$inc":{"age":1}},{"multi":true})
#2、所有人年龄减少5岁
db.user.update({},{"$inc":{"age":-5}},{"multi":true})

增加和减少:$inc

#添加删除数组内元素

往数组内添加元素:$push
#1、为名字为yuanhao的人添加一个爱好read
db.user.update({"name":"yuanhao"},{"$push":{"hobbies":"read"}})#2、为名字为yuanhao的人一次添加多个爱好tea,dancing
db.user.update({"name":"yuanhao"},{"$push":{"hobbies":{"$each":["tea","dancing"]}
}})按照位置且只能从开头或结尾删除元素:$pop
#3、{"$pop":{"key":1}} 从数组末尾删除一个元素

db.user.update({"name":"yuanhao"},{"$pop":{"hobbies":1}
})#4、{"$pop":{"key":-1}} 从头部删除
db.user.update({"name":"yuanhao"},{"$pop":{"hobbies":-1}
})#5、按照条件删除元素,:"$pull" 把符合条件的统统删掉,而$pop只能从两端删
db.user.update({'addr.country':"China"},{"$pull":{"hobbies":"read"}
},
{"multi":true
}
)

添加删除数组内元素:$push,$pop,$pull

#避免添加重复:"$addToSet"

db.urls.insert({"_id":1,"urls":[]})db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}})
db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}})
db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}})db.urls.update({"_id":1},{"$addToSet":{"urls":{"$each":['http://www.baidu.com','http://www.baidu.com','http://www.xxxx.com']}}}
)

避免添加重复:"$addToSet"

#1、了解:限制大小"$slice",只留最后n个

db.user.update({"_id":5},{"$push":{"hobbies":{"$each":["read",'music','dancing'],"$slice":-2}}
})#2、了解:排序The $sort element value must be either 1 or -1"
db.user.update({"_id":5},{"$push":{"hobbies":{"$each":["read",'music','dancing'],"$slice":-1,"$sort":-1}}
})#注意:不能只将"$slice"或者"$sort"与"$push"配合使用,且必须使用"$eah"

其他

#1、删除多个中的第一个
db.user.deleteOne({ 'age': 8 })#2、删除国家为China的全部
db.user.deleteMany( {'addr.country': 'China'} ) #3、删除全部
db.user.deleteMany({}) 

View Code

聚合

如果你有数据存储在MongoDB中,你想做的可能就不仅仅是将数据提取出来那么简单了;你可能希望对数据进行分析并加以利用。MongoDB提供了以下聚合工具:
#1、聚合框架
#2、MapReduce(详见MongoDB权威指南)
#3、几个简单聚合命令:count、distinct和group。(详见MongoDB权威指南)#聚合框架:
可以使用多个构件创建一个管道,上一个构件的结果传给下一个构件。
这些构件包括(括号内为构件对应的操作符):筛选($match)、投射($project)、分组($group)、排序($sort)、限制($limit)、跳过($skip)
不同的管道操作符可以任意组合,重复使用

from pymongo import MongoClient
import datetimeclient=MongoClient('mongodb://root:123@localhost:27017')
table=client['db1']['emp']
# table.drop()

l=[
('egon','male',18,'20170301','老男孩驻沙河办事处外交大使',7300.33,401,1), #以下是教学部
('alex','male',78,'20150302','teacher',1000000.31,401,1),
('wupeiqi','male',81,'20130305','teacher',8300,401,1),
('yuanhao','male',73,'20140701','teacher',3500,401,1),
('liwenzhou','male',28,'20121101','teacher',2100,401,1),
('jingliyang','female',18,'20110211','teacher',9000,401,1),
('jinxin','male',18,'19000301','teacher',30000,401,1),
('成龙','male',48,'20101111','teacher',10000,401,1),('歪歪','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门
('丫丫','female',38,'20101101','sale',2000.35,402,2),
('丁丁','female',18,'20110312','sale',1000.37,402,2),
('星星','female',18,'20160513','sale',3000.29,402,2),
('格格','female',28,'20170127','sale',4000.33,402,2),('张野','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门
('程咬金','male',18,'19970312','operation',20000,403,3),
('程咬银','female',18,'20130311','operation',19000,403,3),
('程咬铜','male',18,'20150411','operation',18000,403,3),
('程咬铁','female',18,'20140512','operation',17000,403,3)
]for n,item in enumerate(l):d={"_id":n,'name':item[0],'sex':item[1],'age':item[2],'hire_date':datetime.datetime.strptime(item[3],'%Y%m%d'),'post':item[4],'salary':item[5]}table.save(d)

准备数据

{"$match":{"字段":"条件"}},可以使用任何常用查询操作符$gt,$lt,$in等#例1、select * from db1.emp where post='teacher';
db.emp.aggregate({"$match":{"post":"teacher"}})#例2、select * from db1.emp where id > 3 group by post;
db.emp.aggregate({"$match":{"_id":{"$gt":3}}},{"$group":{"_id":"$post",'avg_salary':{"$avg":"$salary"}}}
)#例3、select * from db1.emp where id > 3 group by post having avg(salary) > 10000;
db.emp.aggregate({"$match":{"_id":{"$gt":3}}},{"$group":{"_id":"$post",'avg_salary':{"$avg":"$salary"}}},{"$match":{"avg_salary":{"$gt":10000}}}
)

筛选:$match

{"$project":{"要保留的字段名":1,"要去掉的字段名":0,"新增的字段名":"表达式"}}#1、select name,post,(age+1) as new_age from db1.emp;
db.emp.aggregate({"$project":{"name":1,"post":1,"new_age":{"$add":["$age",1]}}
})#2、表达式之数学表达式
{"$add":[expr1,expr2,...,exprN]} #相加
{"$subtract":[expr1,expr2]} #第一个减第二个
{"$multiply":[expr1,expr2,...,exprN]} #相乘
{"$divide":[expr1,expr2]} #第一个表达式除以第二个表达式的商作为结果
{"$mod":[expr1,expr2]} #第一个表达式除以第二个表达式得到的余数作为结果#3、表达式之日期表达式:$year,$month,$week,$dayOfMonth,$dayOfWeek,$dayOfYear,$hour,$minute,$second
#例如:select name,date_format("%Y") as hire_year from db1.emp
db.emp.aggregate({"$project":{"name":1,"hire_year":{"$year":"$hire_date"}}}
)#例如查看每个员工的工作多长时间
db.emp.aggregate({"$project":{"name":1,"hire_period":{"$subtract":[{"$year":new Date()},{"$year":"$hire_date"}]}}}
)#4、字符串表达式
{"$substr":[字符串/$值为字符串的字段名,起始位置,截取几个字节]}
{"$concat":[expr1,expr2,...,exprN]} #指定的表达式或字符串连接在一起返回,只支持字符串拼接
{"$toLower":expr}
{"$toUpper":expr}db.emp.aggregate( {"$project":{"NAME":{"$toUpper":"$name"}}})#5、逻辑表达式
$and
$or
$not
其他见Mongodb权威指南

投射:$project

{"$group":{"_id":分组字段,"新的字段名":聚合操作符}}#1、将分组字段传给$group函数的_id字段即可
{"$group":{"_id":"$sex"}} #按照性别分组
{"$group":{"_id":"$post"}} #按照职位分组
{"$group":{"_id":{"state":"$state","city":"$city"}}} #按照多个字段分组,比如按照州市分组#2、分组后聚合得结果,类似于sql中聚合函数的聚合操作符:$sum、$avg、$max、$min、$first、$last
#例1:select post,max(salary) from db1.emp group by post;
db.emp.aggregate({"$group":{"_id":"$post","max_salary":{"$max":"$salary"}}})#例2:去每个部门最大薪资与最低薪资
db.emp.aggregate({"$group":{"_id":"$post","max_salary":{"$max":"$salary"},"min_salary":{"$min":"$salary"}}})#例3:如果字段是排序后的,那么$first,$last会很有用,比用$max和$min效率高
db.emp.aggregate({"$group":{"_id":"$post","first_id":{"$first":"$_id"}}})#例4:求每个部门的总工资
db.emp.aggregate({"$group":{"_id":"$post","count":{"$sum":"$salary"}}})#例5:求每个部门的人数
db.emp.aggregate({"$group":{"_id":"$post","count":{"$sum":1}}})#3、数组操作符
{"$addToSet":expr}:不重复
{"$push":expr}:重复#例:查询岗位名以及各岗位内的员工姓名:select post,group_concat(name) from db1.emp group by post;
db.emp.aggregate({"$group":{"_id":"$post","names":{"$push":"$name"}}})
db.emp.aggregate({"$group":{"_id":"$post","names":{"$addToSet":"$name"}}})

分组:$group

{"$sort":{"字段名":1,"字段名":-1}} #1升序,-1降序
{"$limit":n}
{"$skip":n} #跳过多少个文档#例1、取平均工资最高的前两个部门
db.emp.aggregate(
{"$group":{"_id":"$post","平均工资":{"$avg":"$salary"}}
},
{"$sort":{"平均工资":-1}
},
{"$limit":2
}
)
#例2、
db.emp.aggregate(
{"$group":{"_id":"$post","平均工资":{"$avg":"$salary"}}
},
{"$sort":{"平均工资":-1}
},
{"$limit":2
},
{"$skip":1
}
)

排序:$sort、限制:$limit、跳过:$skip

#集合users包含的文档如下
{ "_id" : 1, "name" : "dave123", "q1" : true, "q2" : true }
{ "_id" : 2, "name" : "dave2", "q1" : false, "q2" : false  }
{ "_id" : 3, "name" : "ahn", "q1" : true, "q2" : true  }
{ "_id" : 4, "name" : "li", "q1" : true, "q2" : false  }
{ "_id" : 5, "name" : "annT", "q1" : false, "q2" : true  }
{ "_id" : 6, "name" : "li", "q1" : true, "q2" : true  }
{ "_id" : 7, "name" : "ty", "q1" : false, "q2" : true  }#下述操作时从users集合中随机选取3个文档
db.users.aggregate([ { $sample: { size: 3 } } ]
)

随机选取n个:$sample

1. 查询岗位名以及各岗位内的员工姓名
db.emp.aggregate({"$group":{"_id":"$post","names":{"$push":"$name"}}})2. 查询岗位名以及各岗位内包含的员工个数
db.emp.aggregate({"$group":{"_id":"$post","count":{"$sum":1}}})3. 查询公司内男员工和女员工的个数
db.emp.aggregate({"$group":{"_id":"$sex","count":{"$sum":1}}})4. 查询岗位名以及各岗位的平均薪资、最高薪资、最低薪资
db.emp.aggregate({"$group":{"_id":"$post","avg_salary":{"$avg":"$salary"},"max_salary":{"$max":"$salary"},"min_salary":{"$min":"$salary"}}})5. 查询男员工与男员工的平均薪资,女员工与女员工的平均薪资
db.emp.aggregate({"$group":{"_id":"$sex","avg_salary":{"$avg":"$salary"}}})6. 查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
db.emp.aggregate(
{"$group":{"_id":"$post","count":{"$sum":1},"names":{"$push":"$name"}}
},
{"$match":{"count":{"$lt":2}}},
{"$project":{"_id":0,"names":1,"count":1}}
)7. 查询各岗位平均薪资大于10000的岗位名、平均工资
db.emp.aggregate(
{"$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}
},
{"$match":{"avg_salary":{"$gt":10000}}},
{"$project":{"_id":1,"avg_salary":1}}
)8. 查询各岗位平均薪资大于10000且小于20000的岗位名、平均工资
db.emp.aggregate(
{"$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}
},
{"$match":{"avg_salary":{"$gt":10000,"$lt":20000}}},
{"$project":{"_id":1,"avg_salary":1}}
)9. 查询所有员工信息,先按照age升序排序,如果age相同则按照hire_date降序排序
db.emp.aggregate(
{"$sort":{"age":1,"hire_date":-1}}
)10. 查询各岗位平均薪资大于10000的岗位名、平均工资,结果按平均薪资升序排列
db.emp.aggregate(
{"$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}
},
{"$match":{"avg_salary":{"$gt":10000}}},
{"$sort":{"avg_salary":1}}
)11. 查询各岗位平均薪资大于10000的岗位名、平均工资,结果按平均薪资降序排列,取前1个
db.emp.aggregate(
{"$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}
},
{"$match":{"avg_salary":{"$gt":10000}}},
{"$sort":{"avg_salary":-1}},
{"$limit":1},
{"$project":{"date":new Date,"平均工资":"$avg_salary","_id":0}}
)

View Code

可视化工具

链接:https://robomongo.org/

pymongo模块

官网:http://api.mongodb.com/python/current/tutorial.html

from pymongo import MongoClient#1、链接
client=MongoClient('mongodb://root:123@localhost:27017/')
# client = MongoClient('localhost', 27017)#2、use 数据库
db=client['db2'] #等同于:client.db1#3、查看库下所有的集合
print(db.collection_names(include_system_collections=False))#4、创建集合
table_user=db['userinfo'] #等同于:db.user#5、插入文档
import datetime
user0={"_id":1,"name":"egon","birth":datetime.datetime.now(),"age":10,'hobbies':['music','read','dancing'],'addr':{'country':'China','city':'BJ'}
}user1={"_id":2,"name":"alex","birth":datetime.datetime.now(),"age":10,'hobbies':['music','read','dancing'],'addr':{'country':'China','city':'weifang'}
}
# res=table_user.insert_many([user0,user1]).inserted_ids
# print(res)
# print(table_user.count())#6、查找# from pprint import pprint#格式化细
# pprint(table_user.find_one())
# for item in table_user.find():
#     pprint(item)# print(table_user.find_one({"_id":{"$gte":1},"name":'egon'}))#7、更新
table_user.update({'_id':1},{'name':'EGON'})#8、传入新的文档替换旧的文档
table_user.save({"_id":2,"name":'egon_xxx'}
)

View Code

转载于:https://www.cnblogs.com/wxp5257/p/8330630.html

mongodb文档操作相关推荐

  1. mongodb文档操作1

    mongodb文档操作1 mongodb文档操作1 插入操作 1. 使用方法insert()分别插入以下文档到集合stu中. 2. 使用方法insertMany()插入以下一组文档到集合stu中. 删 ...

  2. mongoDB 文档操作_改

    mongoDB 更改操作 格式对比 MySQL update table set .... where .... db.collection.updateOne(query,update,upsert ...

  3. MongoDB——文档操作(更新文档)

    目录 一.更新文档命令的格式 二.更新操作符 三.更新单个文档 3.1.更新单个文档的示例 四.更新多个文档 4.1.更新多个文档的概述 4.2.更新多个文档的示例 五.使用upsert命令 5.1. ...

  4. MongoDB——文档操作(插入文档)

    目录 一.新增单个文档 1.1.语法 1.2.示例 二.批量新增文档 2.1.语法 2.2.示例 三.批量插入随机数据 一.新增单个文档 1.1.语法 insertOne 向指定集合中插入单条文档数据 ...

  5. mongodb 输出数组字段_MongoDb文档操作、索引操作

    学习主题:MongoDb 学习目标: 掌握mongodb文档的更新 掌握mongodb文档的删除 掌握mongodb文档的查找 掌握mongodb文档的条件操作符 掌握mongodb中的索引操作 Mo ...

  6. MongoDB文档查询操作(三)

    关于MongoDB中的查询,我们已经连着介绍了两篇文章了,本文我们来介绍另外一个查询概念游标. 本文是MongoDB系列的第七篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装Mong ...

  7. MongoDB文档查询操作(一)

    上篇文章我们主要介绍了MongoDB的修改操作,本文我们来看看查询操作. 本文是MongoDB系列的第五篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装MongoDB 2.Mongo ...

  8. 商城项目(六)整合Mongodb实现文档操作

    商城项目(六)整合Mongodb实现文档操作 整合Mongodb的过程,以实现商品浏览记录在Mongodb中的添加.删除.查询为例. 环境搭建 Mongodb Mongodb是为快速开发互联网Web应 ...

  9. MongoDB入门学习(一)简介与基本操作、整合SpringBoot集合操作、整合SpringBoot文档操作

    文章目录 1. 简介 1.1 NoSQL和MongoDB 1.2 MongoDB特点 1.2.1 MongoDB 技术优势 1.2.2 Json 模型快速特性 1.3 MongoDB 应用场景 1.4 ...

最新文章

  1. 我用AI分析了《赛博朋克 2077》的评价,发现真爱粉都是来吸猫的
  2. java applet 游戏_Java Applet实现五子棋游戏
  3. biztalk在用户代码中构造多部分消息
  4. HDU2193-AVL-数据结构-AVL
  5. mysql 查询 带数据库实例_数据库查询实例(包含所有where条件例子)
  6. 一走进书房的QuickDove
  7. python数据结构剑指offer-反转链表
  8. 杭电2094产生冠军
  9. python123不能登录_python用户登录,密码错误3次则锁定
  10. 华为惨遭围剿;京东人工智能养猪;三星承认中国市场失败 | 极客头条
  11. 安装debian文件管理器
  12. JDK帮助文档(中文版)
  13. python深度学习 共享 弗朗索瓦•肖莱(François Chollet)
  14. python关键词排名批量查排名_李亚涛:python批量查询关键词百度手机与PC排名
  15. html定义子菜单初始为隐藏,需要静心学习的PbootCMS模板制作教程(五)
  16. T410i笔记本DP线转接HDMI链接外设无法传输声音问题解决
  17. vue 中updated的使用
  18. Win10 1809 PowerShell美化教程
  19. TIA博途WINCC中如何获取当前画面编号并发送给PLC?
  20. linux 负载高 cpu低,Linux服务器CPU使用率较低但负载较高

热门文章

  1. python stm32-STM32F4系列使用MicroPython开发
  2. python自动测试p-Python-selenium-自动化测试模型
  3. python爬虫正则表达式实例-使用正则表达式进行页面提取
  4. python装饰器作用-如何理解Python装饰器?
  5. python文件的后缀名-python文件后缀是什么
  6. 学python入门书-如何学习Python,以及新手如何入门?
  7. python学习手册条件-Python学习手册(第4版)pdf
  8. python一千行入门代码-用Python三十行代码快速生成1000条随机评教内容
  9. python使用open打开文件时显示文件不存在-Python打开文件open()的注意事项
  10. 我自学python的路-Python学习路线图的总结