Mongodb基本使用

启动服务:./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(强制指定索引)不在起作用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • 本文不想文绉绉的去分析MongoDB内部的数据存储结构,只是想单纯的从用的方面给大家一些指导,也不能说是指导,也是...
    DevKyle阅读 3,688评论 2 51
  • 1.安装mongodb后,进入bin2.mongod --dbpath=D:\mongodb\db3.打开另一个c...
    lmem阅读 400评论 0 1
  • 例如:现在有数据库 ·
    心愿2016阅读 465评论 0 1
  • NoSql数据库优缺点 在优势方面主要体现在下面几点: 简单的扩展 快速的读写 低廉的成本 灵活的数据模型 在不足...
    dreamer_lk阅读 2,609评论 0 6
  • 小妹问母亲借了根针 我问她:“干什么!” 她说:等雨停 小妹问母亲借了双鞋 我问:“干什么!” 她说:去水里 小妹...
    LittleHurricame阅读 338评论 0 1