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中的使用。。。。
原文地址:http://blog.51cto.com/13496382/2086916