美文网首页
Mongodb基本使用

Mongodb基本使用

作者: Captain_Gu | 来源:发表于2016-12-25 18:16 被阅读0次

    启动服务:./bin/mongodb-3.2.10/bin/mongod -f conf/mongod.conf

    连接服务:./bin/mongodb-3.2.10/bin/mongo 127.0.0.1:27017

    创建数据库和集合: db.collectionName.insert({x:gu}) 自动创建数据库和集合

    insert:插入数据
    js脚本执行插入:

          for(i=3;i<100;i++)db.gu_collection.insert({x:i})
    

    select:查询数据

        普通查询: db.collectionName.find({x:67}) 
        查询跳过(skip)多少个,显示(limit)几条,用什么排: db.gu_collection.find().skip(50).limit(3).sort({x:1})
          db.gu_collection.findOne() 查找一个数据
    

    update: 更新数据

        db.collectionName.update(condition,newdate,boolean)只更新找到的第一条数据
    
        查询y=100数据,将z设置为1000 ,x,y保持原样 db.gu_collection.update({y:100},{$set:{z:1000}})
       
        更新不存在的数据(不存在自动创建,true)db.gu_collection.update({y:200},{x:2000,y:33:z:10},true)
       
        更新多条数据   db.gu_collection.update({c:1},{$set:{c:2}},false,true) 第四个参数设置为true,更新多条数据
    

    delete:条件删除:db.gu_collection.remove({c:2})
    删除某个表: db.gu_collection.drop();

    index: 索引

        查看索引:db.gu_collection.getIndexs()
                    
                    [
                            {
                                    "v" : 1,
                                    "key" : {
                                            "_id" : 1
                                    },
                                    "name" : "_id_",
                                    "ns" : "test.gu_collection"
                            }
                    ]
                    
        添加索引(在数据创建之前)
                       db.gu_collection.ensureIndex({x:1})x=1正向排序,x=-1负向排序
                       {
                                "createdCollectionAutomatically" : false,
                                "numIndexesBefore" : 1,
                                "numIndexesAfter" : 2,
                                "ok" : 1
                        }
                        //给索引命名
                        db.gu_collection2.ensureIndex({y:1},{name:"gu_index"})
                        //删除索引
                        db.gu_collection2.dropIndex("gu_index")
                        
                        //唯一索引
                        db.gu_collection2.ensureIndex({m:1,n:1},{unique:true})
                        
                        //索引是否稀疏(不必为不存在的m,n值的记录创建索引)
                        db.gu_collection2.ensureIndex({m:1,n:1},{sparse:true})
                        
                        //只查找m存在的记录
                        db.gu_collection2.find({m:{$exists:true}})
                        
                        //查找m不存在,强制使用m_1索引
                        db.gu_collection2.find({m:{$exists:true}}).hint("m_1")
                        
        单键索引:
        
        多键索引:创建与单键索引相同,区别在字段值
                  单键索引值是单一的,string,date,number等
                  多键索引值,arrays(数组)
                   db.gu_collection2.ensureIndex({x:1,y:1})
                                       
                                       {
                            "createdCollectionAutomatically" : false,
                            "numIndexesBefore" : 2,
                            "numIndexesAfter" : 3,
                            "ok" : 1
                    }
                    > db.gu_collection2.getIndexes()
                    [
                            {
                                    "v" : 1,
                                    "key" : {
                                            "_id" : 1
                                    },
                                    "name" : "_id_",
                                    "ns" : "test.gu_collection2"
                            },
                            {
                                    "v" : 1,
                                    "key" : {
                                            "x" : 1
                                    },
                                    "name" : "x_1",
                                    "ns" : "test.gu_collection2"
                            },
                            {
                                    "v" : 1,
                                    "key" : {
                                            "x" : 1,
                                            "y" : 1
                                    },
                                    "name" : "x_1_y_1",
                                    "ns" : "test.gu_collection2"
                            }
                    ]
        
        过期索引:设置索引可用时间,过期则删除索引,删除数据 (设置的字段值必须是ISOdate 或者ISOdate数组,不能是时间戳)
        
                   db.gu_collection2.ensureIndex({time:1},{expireAfterSeconds:30}) //30s后删除数据
                    db.gu_collection2.insert({time:new Date()})
                    30秒后删除数据
                   
                   如果是isodate数组按最小时间删除
                   后台60s跑一次,删除也需要时间,有误差
                   
                   
                   
        全文索引:应用中不仅可以搜索标题,还可以搜索内容(每个collection中只允许创建一个全文索引)
                  
                  创建全文索引:db.gu_collection2.ensureIndex({article:"text"}) key是字段值,value是“text”
                    
                    插入数据:
                    db.gu_collection2.insert({article:"aa bb cc dd ee ff"})
                    WriteResult({ "nInserted" : 1 })
                    db.gu_collection2.insert({article:"aa bb cc dd gg ff"})
                    WriteResult({ "nInserted" : 1 })
                    db.gu_collection2.insert({article:"aa bb cc dd rr ff"})
                    WriteResult({ "nInserted" : 1 })
                    db.gu_collection2.insert({article:"aa bb  dd rr ff"})
                    WriteResult({ "nInserted" : 1 })
                    
                    下面查询:
                    //查询aa
                    db.gu_collection2.find({$text:{$search:"aa"}})
                    { "_id" : ObjectId("585f50b043a807b6b8941734"), "article" : "aa bb cc dd ee ff" }
                    { "_id" : ObjectId("585f50b543a807b6b8941735"), "article" : "aa bb cc dd gg ff" }
                    { "_id" : ObjectId("585f50b943a807b6b8941736"), "article" : "aa bb cc dd rr ff" }
                    { "_id" : ObjectId("585f50bd43a807b6b8941737"), "article" : "aa bb  dd rr ff" }
                    db.gu_collection2.find({$text:{$search:"rr"}})
                    { "_id" : ObjectId("585f50b943a807b6b8941736"), "article" : "aa bb cc dd rr ff" }
                    { "_id" : ObjectId("585f50bd43a807b6b8941737"), "article" : "aa bb  dd rr ff" }
                    db.gu_collection2.find({$text:{$search:"cc"}})
                    { "_id" : ObjectId("585f50b043a807b6b8941734"), "article" : "aa bb cc dd ee ff" }
                    { "_id" : ObjectId("585f50b543a807b6b8941735"), "article" : "aa bb cc dd gg ff" }
                    { "_id" : ObjectId("585f50b943a807b6b8941736"), "article" : "aa bb cc dd rr ff" }
                    
                    //复合查询 gg ff 是或查询
                     db.gu_collection2.find({$text:{$search:"gg ff"}})                           
                     { "_id" : ObjectId("585f50b043a807b6b8941734"), "article" : "aa bb cc dd ee ff" }
                     { "_id" : ObjectId("585f50b543a807b6b8941735"), "article" : "aa bb cc dd gg ff" }
                     { "_id" : ObjectId("585f50b943a807b6b8941736"), "article" : "aa bb cc dd rr ff" }
                     { "_id" : ObjectId("585f50bd43a807b6b8941737"), "article" : "aa bb  dd rr ff" }
                      
                      //不包含cc
                      db.gu_collection2.find({$text:{$search:"gg ff -cc"}})
                      { "_id" : ObjectId("585f50bd43a807b6b8941737"), "article" : "aa bb  dd rr ff" }
                      
                      //与查询 既包含aa 又包含bb 又包含cc的查询
                      db.gu_collection2.find({$text:{$search:"\"aa\" \"bb\" \"cc\""}})
                        { "_id" : ObjectId("585f50b043a807b6b8941734"), "article" : "aa bb cc dd ee ff" }
                        { "_id" : ObjectId("585f50b543a807b6b8941735"), "article" : "aa bb cc dd gg ff" }
                        { "_id" : ObjectId("585f50b943a807b6b8941736"), "article" : "aa bb cc dd rr ff" }
                        
                    文本相似度查询
                     db.gu_collection2.find({$text:{$search:"aa bb cc"}},{score:{$meta:"textScore"}})
                        { "_id" : ObjectId("585f50b043a807b6b8941734"), "article" : "aa bb cc dd ee ff", "score" : 1.75 }
                        { "_id" : ObjectId("585f50b543a807b6b8941735"), "article" : "aa bb cc dd gg ff", "score" : 1.75 }
                        { "_id" : ObjectId("585f50b943a807b6b8941736"), "article" : "aa bb cc dd rr ff", "score" : 1.75 }
                        { "_id" : ObjectId("585f50bd43a807b6b8941737"), "article" : "aa bb  dd rr ff", "score" : 1.2 }
                        { "_id" : ObjectId("585f53db43a807b6b8941738"), "article" : "aa bb cc", "score" : 2 }
                        
                    //文本相似度排序
                     db.gu_collection2.find({$text:{$search:"aa bb cc"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}})
                        { "_id" : ObjectId("585f53db43a807b6b8941738"), "article" : "aa bb cc", "score" : 2 }
                        { "_id" : ObjectId("585f50b043a807b6b8941734"), "article" : "aa bb cc dd ee ff", "score" : 1.75 }
                        { "_id" : ObjectId("585f50b543a807b6b8941735"), "article" : "aa bb cc dd gg ff", "score" : 1.75 }
                        { "_id" : ObjectId("585f50b943a807b6b8941736"), "article" : "aa bb cc dd rr ff", "score" : 1.75 }
                        { "_id" : ObjectId("585f50bd43a807b6b8941737"), "article" : "aa bb  dd rr ff", "score" : 1.2 }
                        
                 查询限制
                    一次查询只能使用一次$text。
                    $text不能存在与$nor(不存在)查询中
                    使用$text后hint(强制指定索引)不在起作用

    相关文章

      网友评论

          本文标题:Mongodb基本使用

          本文链接:https://www.haomeiwen.com/subject/fukdvttx.html