我的MongoDB-基础笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的MongoDB-基础笔记相关的知识,希望对你有一定的参考价值。

mongoDB 知识点小结


1.ObjectId  12位 4时间戳+3机器识别吗+2进程id+3个随机数

  getTimestamp()

  str()


2.Map Reduce 将大批量的工作分解执行,然后将结果合并成最终的结果。


3.MongoDB全文检索


创建索引:db.posts.ensureIndex({post_text:"text"})

使用全文检索:db.posts.find({$text:{$search:"runoob"}})

删除全文索引:

db.posts.getIndexes()

db.posts.dropIndex("post_text_text")


4.可以使用正则

使用正则查询的三种方式:

db.posts.find({post_text:{$regex:"runoob"}})

db.posts.find({post_text:/runoob/})

title:eval("/"+title+"/i")    // 等同于 title:{$regex:title,$Option:"$i"}  


5.固定大小的集合

特点:1>插入速度极快  2>按照插入顺序的查询输出极快  3>能在插入最新数据时,淘汰最早的数据

用法:1>存储日志信息  2>缓存少量文档

创建:db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000}) 大小固定 文档个数固定

判断:db.cappedLogCollection.isCapped()

转换:db.runCommand({"convertToCapped":"posts",size:10000})

查询:db.cappedLogCollection.find().sort({$natural:-1})


6.自增

MongoDB没有实现,可以变成实现这个功能

该函数实现了key的自增

function getNextSequenceValue(sequenceName){

   var sequenceDocument = db.counters.findAndModify(

      {

         query:{_id: sequenceName },

         update: {$inc:{sequence_value:1}},

         "new":true

      });

   return sequenceDocument.sequence_value;

}


7.GridFS

存储超出16M的文件

files 文件的信息描述

chunk 文件的拆分体 256k/个



8.MongoDb关系 1:1 1:N N:1 N:N

1对多:引入式关系  嵌入式关系


9.数据库的引用

{

$ref:集合名称

$id:引用的id

$db:数据库名称,可选参数

}

使用:

>var user = db.users.findOne({"name":"Tom Benzamin"})

>var dbRef = user.address

>db[dbRef.$ref].findOne({"_id":(dbRef.$id)})



10.覆盖索引的使用

db.users.ensureIndex({gender:1,user_name:1})

db.users.find({gender:"M"},{user_name:1,_id:0})  正确

db.users.find({gender:"M"},{user_name:1})。      错误



11.查询分析

hint()和explain()



12.MongoDB原子操作

不支持事物,但支持一些原子的操作

。。。例如:$set $unset $inc $push $pushAll $pull $addToSet $rename $bit



13.MonogoDB索引的使用

创建索引:db.users.ensureIndex({"tags":1})

使用索引:db.users.find({tags:"cricket"})

验证使用:db.users.find({tags:"cricket"}).explain()

索引子文档字段:

创建索引:db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

索引使用:db.users.find({"address.city":"Los Angeles"})   

索引目的:方便读取,缺点额外的内存开销,2.6增加了对索引字段值的长度限制。



14.基础

MongoDB安装和连接略



创建数据库:use runoob

查看所有数据库:show dbs

插入数据:db.runoob.insert({"name":"菜鸟教程"})

删除当前数据库:db.dropDatabase()



删除集合:db.collection.drop()

创建集合:db.creteCollection(name,{ capped : true, autoIndexId : true, size : 6142800, max : 10000 })

capped:是否固定

autoIndexId:是否以_id创建索引

size:集合最大值

max:集合中包含文档最大数量



插入文档:db.col.insert(document)

更新文档:

db.collection.update(

   <query>,

   <update>,

   {

     upsert: <boolean>,

     multi: <boolean>,

     writeConcern: <document>

   }

)

删除文档:

db.collection.remove(

   <query>,

   <justOne>

)

查询文档:db.col.find().pretty()


操作符介绍:

条件操作符:><>=<=...

$type:数据类型和数字对应

limit和skip  $gt优化

sort()

aggregate聚合操作...



管道:当前命令的输出结果作为下一个命令的参数


MongoDB复制:副本会接管主节点成为主节点,不会出现宕机的情况

分片。。。。


MongoDB Java和Node.js中的使用。。。。










以上是关于我的MongoDB-基础笔记的主要内容,如果未能解决你的问题,请参考以下文章

NoSQL学习笔记之——Redis基础

MongoDB学习笔记(索引)

mongodb学习笔记之索引(转)

学习笔记Python基础教程学习笔记

MongoDB权威指南第二版学习笔记二

mongodb 基础入门教程