database,collection,document,field,index,primary key(_id)
show dbs; db; use dbName(切换且创建); db.dropDatabase();db.createCollection(name,option);往不存在collection插入document会自动创建collection
db.colName(当前数据库的colName集合下操作): find,insert,save(不指定_id就是insert,指定可能变成更新了),remove(根据查询条件删,{}为全删,可指定只删1条),skip,sort(),limit,drop,update(查询json,更新json,是否upsert,是否multi)
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
db.col.find({"title" : {$type : 2}})或db.col.find({"title" : {$type : 'string'}}) //类型:Double为1,string为2
db.col.find().sort({"likes":-1}) //-1降序,1升序,
db.col.createIndex({"title":1,"description":-1}, {background: true}) //ensureIndex和createIndex一样,索引存储在内存
dropIndex("索引名称") dropIndexes() totalIndexSize() getIndexes()
mongostat mongotop
mongodump -h <hostname><:port> -d dbname -o dbdirectory和 mongorestore -h <hostname><:port> -d dbname <path> //备份和恢复数据
db.mycol.aggregate({$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}) //按by_user列分组,统计每组的数量,_id指明进行分组的列
mongodb 有副本和分片的概念,单个实例启动需指定自己所在的副本集(–replSet rs0),客户端连接任一实例进行rs.initiate()然后rs.add()或直接rs.initiate(带各节点地址),rs.conf(),rs.status() ,
副本:任何节点都可为主(选举),写入在主,自动故障转移和恢复
分片: mongos启动路由进程(需指定config server),客户端连接路由进程进行分片配置和访问
嵌入和引用(1对多)
{
"_id":ObjectId("52ffc33cd85242f436000001"),
"address": [
{
"building": "22 A, Indiana Apt"
},
{
"building": "170 A, Acropolis Apt"
}]
} //嵌入
{
"_id":ObjectId("52ffc33cd85242f436000001"),
"address_ids": [
ObjectId("52ffc4a5d85242602e000000"),
ObjectId("52ffc4a5d85242602e000001")
]
} //引用
创建集合给定capped选项(固定大小,超出覆盖最初文档,size(必须)指定大小,单位KB,max(可选)指定文档个数上限),固定集合按插入顺序排序,且不允许删除
MongoDB要实现自增需自己编程
db.posts.find({post_text:{$regex:"runoob"}})
db.posts.ensureIndex({post_text:"text"}) db.posts.find({$text:{$search:"runoob"}}) //全文检索
mongofiles.exe -d gridfs put song.mp3 存放文件在gridfs数据库,使用fs.files和fs.chunks集合存放
在一个集合里面,每个文档都有唯一的"_id"值,可为任意类型,若不指定则给ObjectId
索引数组字段即为数组每个Index位置都建立一个索引,索引子文档字段
db.users.find({gender:"M"},{user_name:1}).hint({gender:1,user_name:1}) //hint强制用某个索引
覆盖索引查询:只用内存中的索引而不用去查找文档即可完成查询,需查询字段和返回字段都在索引中
$ref (集合) , $id , $db
MongoDB mapReduce:先query,后map(分解),后reduce(合并结果),每个工作单元得到1个key-value,相同key放一起得到若干key-values,对单个key-values进行最终处理