帮助help
help -----帮助
db.help()
-----显示当前文档的方法
db.test.help()
-----显示数据库下test集合(document\表)所有
使用的方法
db.test.find().help()
-----显示当前数据下test集合的所有数据方法
db 显示当前数据名称
-----首次进入时 默认为test
创建、切换数据库
use movie -----切换 创建数据库 (有点话是创建、没有的时候回创建)
-----首次创建的数据库不会显示 应为内容为空
db.createCollection("a") -----创建文档(表) 此时就可以在可视化工具中看到数据库
db.createCollection("a",{size:20,capped:true,max:200}) -----创建文档 不建议
show dbs -----显示数据库列表
show collections -----获取集合列表
db.stats() -----显示当前数据库的状态(信息)
db.version() -----显示当前数据库的版本信息
db.getMongo() -----获取当前数据库连接的服务器信息
connection to 127.0.0.1:27017
db.getName() -----获取当前数据库的名称,相当于db
db.dropDatabase() -----删除当前数据库 小bug删除后使用db还是显示原数据库名称
db.collection.drop() -----删除集合
db.getCollection("collName"); ------得到指定名称的聚集集合
db.getCollectionNames(); ------得到当前DB的所有的聚集集合 以数组的形式
db.printCollectionStats(); ------显示当前db所有集合的状态
增
1.插入文档
db.ele.insert({name:1,age:20,sex:"man"}) ------插入以对象的方式
db.ele.save({name:2,age:20,sex:"women"})
db.ele.insertOne({name:20,age:0}) ------单次插入
db.ele.insertMany([{},{}]) ------插入多个文档,以数组存储对象的方式
删
remove({},false,err)
一个参数为匹配条件
第二个参数为是否只删除第一个 默认false 全部删除 设置为true时 只删除第一个匹配的(也可以设置为1)
第三个为抛出的异常
db.ele.remove({name:"tehui"})
-----会删除匹配到的多个文档
db.ele.remove({name:"tehui"},true)
-----只删除了第一个匹配的
db.ele.deleteMany({"business_flag":2})
------删除多个文档时可用,删除一个时也可用
改
updatae({},{},true,false)
4个参数 第一个是匹配的条件
第二个更新的属性
第三参数 匹配不到时 是否插入 默认为false 不插入
第四个参数 是否只跟新第一个匹配到的文档 默认false 只更新第一次匹配到的文档
更新business_flag为14的数据,使它name=新店特惠1
db.ele.update({"business_flag":14},{$set:{name:"tehui"}})
-----WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
-----匹配到1个 更新1个
db.ele.update({"business_flag":24},{$set:{name:"tehui"}},false)
db.ele.update({"business_flag":24},{$set:{name:"tehui"}})
----第三个参数为false时 和默认时
----WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })
db.ele.update({"business_flag":24},{$set:{name:"tehui"}},true)
----第三个参数为true时
----WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("59662b20e6c44cb771e9e3dc")})
db.ele.update({"is_in_serving":true},{$set:{name:"111"}},false,false)
----第四个参数为默认值和false时 只匹配了第一个
db.ele.update({"is_in_serving":true},{$set:{name:"111"}},false,true)
----设置为true 是所有满足条件的都匹配 和更新
当匹配的文档没有改字段时添加字段
db.ele.update({},{$inc:{business_flag:1}},false,true)
查
find 第一个参数是限制条件 {}对象 空的时候表示没有限制,会匹配所有 键值对 其中值也可以为对象
第二个是显示的格式 {}对象 键值对值为0时不显示 1为显示 不设置是默认全显示
简单的查询:
db.ele.find({}) ------查询结果是没有使用任何符号相连接的,
每一个对象又叫做一个document(文档----行)
db.ele.find({},{name:1,_id:0})
db.elelist.find({"name":"下午茶"})
----该方法会显示name为下午茶的集合的所有数据 体验不好
db.ele.find({name:"美食"},{name:1,_id:0})
----查询条件 name:美食,显示name _id不显示
查询大于某一条件:
db.ele.find({"business_flag":{$gt:5}},{_id:0,name:1})
-----大于5的部分用对象实现,对象内部大于用$gt
小于 {$lt:10}
db.ele.find({"business_flag":{$lt:10}},{_id:0,name:1})
------小于10的部分
大于等于{$gte:num}
db.ele.find({"business_flag":{$gte:4}},{_id:0,name:1})
-----$gt 后加e 改成$gte
小于等于{$lte:num}
db.ele.find({"business_flag":{$gte:4}},{_id:0,name:1})
并且{obj1,obj2}
db.ele.find({"business_flag":{$lt:16},id:{$gt:10}},{_id:0,name:1})
------第一参数设置两个属性 即设置两个条件
查询num1~num2之间的数据{$gt:num,$lt:num1}
db.ele.find({"business_flag":{$gt:6,$lt:14}},{_id:0,name:1})
-------键值对 值也可以设成对象的形式。
查询去重 distinct(独特性)
db.ele.distinct("business_flag")
-------即查询文档中 某一属性的值的种类
模糊查询 //
db.ele.find({name:/午/},{_id:0,name:1})
//中的字符串不用加'' 加了会认为是匹配"午"而不是 午
查询后的数据 排序 sort({"键":值}) 其中键表示按什么排序 值为1是升序 值为-1是为降序
db.ele.find({},{"business_flag":1,"name":1,_id:0}).sort({"business_flag":1});
---升序
db.ele.find({},{"business_flag":1,"name":1,_id:0}).sort({"business_flag":-1});
---升序
查询前num条 limit(num)
db.ele.find({},{_id:0,name:1,"business_flag":1}).limit(5)
-----查询前5条 包括第5条
查询index后的数据 skip(num)
db.ele.find({},{_id:0,name:1,business_flag:1}).skip(6)
-------查询第7条开始后的数据
查询a~b之间的数据
db.ele.find({},{_id:0,name:1,business_flag:1}).limit(5).skip(6)
其实相当于查询第6条之后的5个信息 不包括第6条信息
查询匹配条件的文档集的数
db.ele.find({"business_flag":{$lt:14}},{_id:0,name:1,business_flag:1}).count()
----------输出的结果是匹配的数目
匹配含有某一条件的集合的数目
db.ele.find({"business_flag":{$exists:true}}).count()