Mongodb基本使用

2016-12-25  本文已影响0人  Captain_Gu

启动服务:./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(强制指定索引)不在起作用
上一篇下一篇

猜你喜欢

热点阅读