前段时间工作上面由于没有多少事所以玩了玩mongodb,学习了它的基本语法,然后现在在这里做一个简单的总结。

1.我是在win平台上面,启动的话比较麻烦,所以我就简单的把启动过程做了个批处理文件

启动脚本

 



:启动mongodb的批处理文件,到mongodb的bin目录下面
    D:
    cd "Program Files"
    cd MongoDB\Server\3.2\bin
:其中D盘下面的data,db目录是自己手动创建的
:启动带有的参数 --auth(开启用户访问权限)
:--dbpath(数据存储路径)
    mongod.exe --auth --dbpath D:\data\db



 

2.一些简单基本语法



#创建或者切换数据库
use admin
#查询方法
db.system.users.find()
#格式化的查询结果
db.userinfo.find().pretty()

查询比较符
等于    {<key>:<value>}    db.col.find({"by":"菜鸟教程"}).pretty()    where by = '菜鸟教程'
小于    {<key>:{$lt:<value>}}    db.col.find({"likes":{$lt:50}}).pretty()    where likes < 50
小于或等于    {<key>:{$lte:<value>}}    db.col.find({"likes":{$lte:50}}).pretty()    where likes <= 50
大于    {<key>:{$gt:<value>}}    db.col.find({"likes":{$gt:50}}).pretty()    where likes > 50
大于或等于    {<key>:{$gte:<value>}}    db.col.find({"likes":{$gte:50}}).pretty()    where likes >= 50
不等于    {<key>:{$ne:<value>}}    db.col.find({"likes":{$ne:50}}).pretty()    where likes != 50
#查询年纪大于等于25的信息
db.userinfo.find({"age":{$gte:25}}).pretty()

#查询age字段是String类型的记录。显示的结果集(默认显示_id字段)只有user_name和age这两个字段。
    db.userinfo.find({"age":{$type:2}},{_id:0, "user_name":1, "age":1})


#删除用户
db.dropUser('root')
#创建新的用户

db.createUser({'user':'root', 'pwd':'000000','roles':[{'role':'readWrite', 'db':'mytest'}, {'role':'readWrite', 'db':'admin'}]})

#mongodb创建集合对象 db.XXX:表示如果XXX存在则往这里直接插入数据,如不存在,则创建对应的集合
#插入数据     db.COLLECTION_NAME.insert(document)
db.userinfo.insert([{user_name:'1', age:10, sex:1},{user_name:'2', age:10, sex:0}])
#mongodb更新语句更新单条语句  如果 $set字段不存在,若键不存在,会新建
db.item_info.update({"item_id":"c9aea5ea-c29d-43ec-8205-fdb1e69934b7"},{$set:{"item_name":"test_update", "test":"test_add"}})
$unset关键字,删除对应的key值
去除【item_name】、【test】这两个key
 db.item_info.update({"item_id":"c9aea5ea-c29d-43ec-8205-fdb1e69934b7"},{$unset:{"item_name":"test_update", "test":"test_add"}})

#mongodb更新语句更新多条语句
db.userinfo.updateMany({"user_name":"1"}, {$set:{"user_name":"nie"}})
#更新age字段<= 20的字段为wewe值
db.userinfo.updateMany({"age":{$lte:20}}, {$set:{"age":"wewe"}})

#mongodb删除语句
db.userinfo.remove({"user_name":"2"})

删除所有数据
db.userinfo.remove({})

#type 
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
// 查询age字段是string类型的所有记录
db.userinfo.find({"age":{$type:2}})



#MongoDB sort()方法



 



在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,



并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。



db.userinfo.find({},{_id:0,"user_name":1, "age":1}).sort({"age":1}).pretty()



 



#创建索引 过在创建索引时加background:true 的选项,让创建工作在后台执行



 



 



db.userinfo.ensureIndex({"user_name":1},{background:true})



最大范围

  • 集合中索引不能超过64个
  • 索引名的长度不能超过125个字符
  • 一个复合索引最多可以有31个字段



 



#MongoDB 聚合函数






 

mongodb function语法 mongodb语法详解_mongodb

 



#删除
    db.item_info.deleteOne({"item_name":"update_item_name"})
    db.item_info.find({"item_name":"update_item_name"}).count()
            DeleteResult delete = item.deleteMany(Filters.eq("item_name", "update_item_name"));
            System.out.println(delete.getDeletedCount());

#mongodb语句explain
> db.item_info.find({}).explain()
{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "test.item_info",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "$and" : [ ]
                },
                "winningPlan" : {
                        "stage" : "COLLSCAN",
                        "filter" : {
                                "$and" : [ ]
                        },
                        "direction" : "forward"
                },
                "rejectedPlans" : [ ]
        },
        "serverInfo" : {
                "host" : "Lenovo-niejian",
                "port" : 27017,
                "version" : "3.2.8",
                "gitVersion" : "ed70e33130c977bda0024c125b56d159573dbaf0"
        },
        "ok" : 1
}

#mongodb语句like(正则表达式)

如果检索需要不区分大小写,我们可以设置 $options 为 $i。
以下命令将查找不区分大小写的字符串 w3cschool.cc

db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})


db.item_info.find({"item_id":{$regex: /c9aea5ea/}})